2013-04-01 62 views
0

我遇到以下問題。 我需要爲一家餐廳提供應用程序,用戶將能夠選擇一道菜,並添加喜歡,如更多的鹽,薯條等相同的菜...該應用程序讀取所有的菜餚和偏好在線。 我想在使用NSUserDefaults將請求發送到服務器之前臨時保存這些請求。 有一些因素需要考慮:保存來自用戶的請求

  1. 用戶可以編輯請求。
  2. 用戶可以刪除請求。

什麼是構建此應用程序的最佳方法? NSUserDefaults或CoreData?

在此先感謝。

+1

在我看來,你可以使用NSUserDefaults作爲比Core Data更好的opcion,因爲你管理的數據很小。但是,也許我會使用歸檔或propertyList,因爲我認爲NSUserDefaults更適合類似應用程序設置的應用程序。 – thxou

回答

1

都沒有。我會說實現一個實現NSCoding協議的自定義類。 NSCoding需要您實現兩個方法:

- (id)initWithCoder:(NSCoder *)aDecoder; 
- (void)encodeWithCoder:(NSCoder *)aCoder; 

從那裏,你會使用類似[NSKeyedArchiver archiveRootObject:myCustomDishArray toFile:[self dishesFilePath]];

最Cocoa類已經實現了NSCoding協議,像NSArray的,所以如果你有實例的數組你的自定義類,你可以存檔數組。 有關NSCoding協議Here的更多信息。

+0

只要你沒有實體之間的關係,數據集足夠小以適應內存,更新很少,這就足夠了。 –

1

核心數據主要用於處理海量數據,我個人認爲您不需要將它用於餐廳。

1

如果您不熟悉CoreData並且數據量相對較少,那麼使用NSUserDefaults可能會更好。
但是,我認爲正確的方法是使用CoreData,因爲它更加靈活和高效,並且您保存的數據具有上下文無關用戶默認值(我將使用用戶默認值僅用於保存應用程序範圍的數據,設置,而不是數據記錄)。 CoreData更新,插入和刪除數據記錄更方便。