Thursday, October 18, 2012

iOS 資料保存 Data Persistence - Property List

NSUserDefaults (Setting)
Property List (plist)
CoreData


------------------------------------

iOS檔案位置管理:
專案附檔的都放在專案下
動態產生的都放在模擬器(實機)底下

好處:
1.專案附檔的plist有UI介面可以方便管理
2.由writeToFile:atomically寫出Property List

名詞解釋:
property list: 一種xml的資料格式
writeToFile: 寫檔動作,儲存plist到模擬器document資料夾的動作
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  : 模擬器/實機 的document資料夾位置
NSPropertyListSerialization: coverts Property List to/from NSData

iPhone 開發教學 - 使用 Property List 和 SQLite 處理資料儲存
(重要!教檔案位置,讀寫檔基本指令。)

Introduction to Property Lists (Apple Official)


相關指令  //codes are from 彼得潘app教學書


讀取專案裡附的檔案 (除圖片之外,如 txt 檔或影音檔)


讀取儲存動態產生的檔案(document底下位置)



非特權物件的寫檔
keyword:
encodeObject, decodeObjectForKey 是物件裡面的encode實作
[NSKeyedArchiver archiveRootObject: toFile:];
[NSKeyedUnArchiver unarchiveObjectWithFile:];


非特權物件的寫檔 (使用arhiver)
用NSMutableData *data來當作archiver,然後用writeToFile寫檔



用法:
// Writing
- (BOOL)writeToFile:(NSString *)aPath atomically:(BOOL)flag;
- (BOOL)writeToURL:(NSURL *)aURL atomically:(BOOL)flag;

// Reading
- (id)initWithContentsOfFile:(NSString *)aPath;
- (id)initWithContentsOfURL:(NSURL *)aURL;


特權物件可以直接用WriteToFile寫檔(只有NSString, NSData, NSDictionary, NSArray可以),而非特權物件需要先archive才可以寫檔。


.

    No comments:

    Post a Comment