2011-07-28 12 views
2

私はlistOfContactsToLayという配列を持っています.3つの文字列フィールドを持つContactオブジェクトを含んでいます。どのようにしてこの配列をファイルに書き込むことができますか?ここ 私が持っているもの: iPhone dev - オブジェクトの配列をファイルに書き込み/読み込み

-(NSString*)fPath 
{ 
    return [DocumentsDirectory() stringByAppendingPathComponent:@"quickdial.xml"]; 
} 

//SERIALIZATION 
- (void) save:(NSMutableArray*)array 
{ 

    [NSKeyedArchiver archiveRootObject:array toFile:[self fPath]]; 

    NSLog(@"List of contacts been written in file"); 

} 

// get that array back 
- (NSMutableArray*)load 
{ 
    NSLog(@"List of contacts is being read from file"); 
    return [NSKeyedUnarchiver unarchiveObjectWithFile:[self fPath]]; 

} 

そしてもちろんの

次は動作しません:それは無効な引数の例外をスロー

-(IBAction)doneWithContacts { 
    [ContactManager createXmlInMydocumentsDirectory]; 
[self save:listOfContactsToLay]; 
    NSLog(@"List of contacts to lay saved!"); 
    [self.parentViewController dismissModalViewControllerAnimated:YES]; 

} 

どうすればよいですか?オブジェクトのMSMutableArrayをシリアル化するにはどうすればよいですか? ありがとう

答えて

0

ファイルの形式は気になりますか?そうでない場合は、NSArrayクラスの組み込みメソッドを使用しないでください。

+ (id)arrayWithContentsOfFile:(NSString *)aPath; 
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag; 

NSArray Class Referenceを参照してください。

+0

配列の内容は、すべてのプロパティリストオブジェクト(NSStringの、のNSData、NSArrayの、またはNSDictionaryのオブジェクト)であれば、この方法で書かれたファイルを使用して新しい配列を初期化するために使用することができますクラスメソッドarrayWithContentsOfFile:またはインスタンスメソッドinitWithContentsOfFile:。このメソッドは、ファイルを書き出す前に、含まれているすべてのオブジェクトがプロパティリストオブジェクトであることを再帰的に検証し、結果のファイルが有効なプロパティリストではないため、すべてのオブジェクトがプロパティリストオブジェクトでない場合はNOを返します。 –

1

ContactクラスがNSCodingプロトコルに準拠しているかどうか。

More info

関連する問題