2011-10-06 73 views
1

我有一個問題涉及將一個Class對象的數組保存到plist然後重新找回它。如何將Class對象的數組保存到Plist中(Iphone開發)

例如我有一個類「A」與兩個NSString和一些int值。我有一個A類對象數組。

如何將這個數組保存到plist中。

我可以完成一個簡單的數組(Array of Strings)存儲到Plist.There沒有錯誤。

但是,當我存儲這個「對象數組」它不能完成。

在此先感謝。

回答

1

指明的.plist路徑類變量正確

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"patientList.plist"]; 
[myPatients writeToFile:path atomically:YES]; 

使用上面我希望這西港島線是有用

4

首先轉換您的NSArray到NSDictionary中給出here

然後使用NSDictionarywriteToFile:atomically:將其存儲爲Plist。

爲此,您的課程必須符合NSCoding協議。或者,您可以直接將您的NSArray本身寫入plist,而無需轉換爲NSDictionary。但無論如何,該類應符合NSCoding協議。

+0

謝謝Gomathi。 Di你有任何與此相關的工作代碼 謝謝 – HCharli

+1

[link](http://www.icodeblog.com/2009/08/26/objective-c-tutorial-nsarray/)會幫到你我猜。 – Ilanchezhian

1

你不能將對象保存到Plists。它永遠不會工作,你只能將內部變量保存到plist。你想要保存對象,你需要首先使你的類NSCoding兼容。這是一個很好的鏈接解釋它http://samsoff.es/posts/archiving-objective-c-objects-with-nscoding但它沒有提及對象內的對象,但它基本上只是另一個級別。您需要確保您所保存的對象內的任何對象都符合NSCoding標準,一直沿着該鏈條。然後你需要使用NSKeyedArchiver來保存它們。我寫了一個很好的管理類,只要您的對象符合NSCoding,就會爲您處理所有這些問題。其可用權在這裏https://github.com/caranicas/Save-Manager享受!