ここに私のコードです..なぜデバイス上の配列にオブジェクトを追加しないのですか? 配列をファイルから読み取れないことがありますか?私はドキュメントのディレクトリにファイルを書き込むが、何が間違っている可能性がありますか?おかげで...シミュレータで動作、iPhoneデバイスで動作しません
if (contactsToProcess==nil)
{
contactsToProcess=[[NSMutableArray alloc] init];
NSLog(@"Array with objs initialized");
}
contactsToProcess=[NSKeyedUnarchiver unarchiveObjectWithFile:fPath()];
[contactsToProcess addObject:cont];
NSLog(@"Object added to file:");
for(Contact *cn in contactsToProcess)
{
NSLog(@"%@", cn.fName);
}
[NSKeyedArchiver archiveRootObject:contactsToProcess toFile:fPath()];
FPATH()を行います。パスはfPath()
によって返される
NSString* PathforResources(NSString* filename)
{
NSString *leftpart=[filename stringByDeletingPathExtension];
NSString *extension=[filename pathExtension];
return [[NSBundle mainBundle] pathForResource:leftpart ofType:extension];
}
NSString* DocumentsDirectory()
{
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDirectory, YES);
return [paths objectAtIndex:0];
}
NSString* fPath()
{
return [DocumentsDirectory() stringByAppendingPathComponent:@"quickdial.xml"];
}
6行目で 'contactsToProcess'を再割り当てすると、最初の5行(' if contactsToProcess == nil {...} ')は役に立たなくなります。 – Cyrille
'fPath()'によって返されるパスは何ですか? – PeyloW
これは、ドキュメントディレクトリへのパスを返します。NSString * PathforResources(NSString * filename) { \t NSString * leftpart = [ファイル名stringByDeletingPathExtension]; \t NSString * extension = [filename pathExtension]; \t戻り値[[NSBundle mainBundle] pathForResource:leftpart ofType:extension]; \t} NSStringの* DocumentsDirectory(){ \tにNSArray *パス= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory、NSUserDirectory、YES)。 \t return [paths objectAtIndex:0]; \t} NSStringの* FPATH(){ \tリターン[DocumentsDirectory()stringByAppendingPathComponent:@ "quickdial.xml"]。 } –