我是Mac上的Objective-C編程新手。我有一個Mac應用程序,我創建了一個類'Product',其中包含'ID','Name','Price'等變量。當我的應用程序中創建一個新的'Product'時,我需要能夠保存它。我已經看過各種儲蓄方法,但我不確定要使用哪種方法。任何建議將不勝感激。保存在Objective-C中
回答
要保存/讀取你的對象在一個文件中,你必須做一些所謂serializing and deserializing your object 。爲此,您必須決定是否要使用現有的文件格式(推薦)或創建自己的文件格式。
使用現有的格式 - 一個好的做法是使用像XML現有的格式,是什麼使得它更容易從不同的應用程序後讀取數據。你的XML的內容看起來是這樣的:
<products>
<product>
<id>24</id>
<name>Playstation 3</name>
<price>200</price>
</product>
<product>
<id>52</id>
<name>Xbox 360</name>
<price>150</price>
</product>
<product>
<id>64</id>
<name>Pooh, the bear</name>
<price>10</price>
</product>
</products>
這種結構可以很容易地通過任何其他應用程序後閱讀。要以這樣的結構獲取對象的內容,可以使用serialization library like wonderxml,或者編寫自己的序列化方法,以便序列化和反序列化對象。最後,將用這些方法創建的XML寫入文件,例如with the NSFileManager。
創建自己的文本或二進制格式需要定義自己的文件格式,因此需要編寫自己的序列化和反序列化方法。
將文本格式以文本方式寫入文件中,就像您定義它的方式一樣。例如,用','分隔每個屬性,並用';'分隔每個產品條目。在這裏你必須照顧編碼和轉義你用作分隔符的字符。內容看起來是這樣的(注意:反斜槓作爲轉義字符):
24,Playstation 3,200;52,Xbox 360,150;64,Pooh\, the bear,10
創建自己的二進制格式大約需要二進制文件更多的知識。您必須定義哪些內容以哪種順序進行編碼。您的格式可以例如是這樣的:
-------------------------------------------------------|
| attribute | length | notice |
|------------|---------|-------------------------------|
| id | 4 bytes | number, note [endianess][5] |
| nameLength | 4 bytes | length of the following name |
| name | ? bytes | take length from previous |
| price | 4 bytes | |
-------------------------------------------------------|
當DE /序列化,你只需要讀/根據您所創建的規範書寫的對象。此方法創建最緊湊的文件。
我會使用核心數據。我將從基本的Xcode主細節模板開始,它將爲您創建模型和示例實體,並提供列出所有項目和添加新項目的視圖以及詳細視圖,您可以在其中查看令人震驚的細節。
從產品中製作NSDictionary是否容易?
該字典中的所有值都是NSString,NSData,NSArray或NSDictionary的子類嗎?
如果是這樣,您可以創建一個NSArray,而不是爲每個產品包含一個這樣的NSDictionary。
方法writeToFile:atomically:將允許您從此NSArray保存文件。 方法initWithContentsOfFile:
將允許您閱讀bak該文件並從中創建一個NSArray。然後,您將能夠獲取每個NSDictionary並從中重新創建一個產品。
如果你不能使你的數據適合該方案,你將不得不使用更精細的序列化方法。
- 1. ObjectiveC在tableview中保存圖像
- 2. 如何在iOS中爲objectiveC字符串保護dealloc內存?
- 3. ObjectiveC中的MulticastDelegate
- 4. 中的ObjectiveC
- 5. 在的ObjectiveC
- 6. 在的ObjectiveC
- 7. 在的ObjectiveC
- 8. 在的ObjectiveC
- 9. 在ObjectiveC中排序數組
- 10. 突破在的ObjectiveC
- 11. NumberFormatter - ObjectiveC
- 12. 在startPage方法中從ObjectiveC獲取HTML5本地存儲項目
- 13. 不知道文件編碼在objectivec中的內存映射
- 14. 二維動態內存分配 - ObjectiveC
- 15. ObjectiveC - 構造函數,內存管理
- 16. 在ObjectiveC中測試類的加載
- 17. 在drawRect方法中刪除形狀? - ObjectiveC
- 18. 在ObjectiveC中讀取.doc(MSWord)文件?
- 19. 用intC鍵映射在objectiveC中
- 20. 在InterfaceBuilder中加載圖像序列-ObjectiveC
- 21. 在objectiveC中比較兩個日期?
- 22. ObjectiveC中的靜態變量
- 23. 什麼是ObjectiveC中的retainCount?
- 24. MVC中的ObjectiveC編程
- 25. 從ObjectiveC類中引用UIViewController
- 26. ObjectiveC中的計算交點
- 27. 優點和iOS中/的ObjectiveC
- 28. 從Objectivec中調用C main
- 29. Swift:import ObjectiveC vs Foundation
- 30. JSON ObjectiveC - 錯誤
需要多長時間才能保存它?會有多少產品? Synching?雲存儲? 「可搜索」? – Wain
對不起,我不清楚。我只是在本地保存它們,即沒有云存儲。該應用程序只是一個個人應用程序。產品數量將達到約750個。我會要求將它們永久存儲,並具有編輯它們的能力。 –