无法写入plist文件iOS

时间:2012-08-04 12:16:11

标签: iphone objective-c ios

我在stackoverflow上阅读了很多关于此的问题,并确保在第一次运行时将我的plist文件从bundle复制到文档目录。但是,现在当我尝试写入此plist文件时,它无法成功写入。

NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *documentsDirectory = [path objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"inAppList.plist"];
[infoDict setObject:[NSNumber numberWithInt:1] forKey:@"someKey"];
didWrite = [infoDict writeToFile:filePath atomically:YES];

didWrite出现'不'。

我确信plist文件正在文档目录中复制,因为我可以在组织器和我的设备选项卡中看到它。此外,我能够成功从文档目录中读取文件。

可能只是一个很小的错误,但真的无法弄清楚什么是错的。

2 个答案:

答案 0 :(得分:1)

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0]; 

plistpath = [[NSString alloc] initWithString:[documentsDirectory stringByAppendingPathComponent:@"Product.plist"]];

然后

[array writeToFile:path atomically:YES]; 

[Whatever [Array or Dictionary] you want to Write in Plist]

如果仍未创建plist,请检查您的数组或字典是否必须为空。

还有一件事:确保您没有在plist中插入空值。如果你尝试这样做....那么它也无法创建plist。

答案 1 :(得分:1)

与您的代码类似,代码可能如下所示:

// get plist file path
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString *documentsDirectory = [path objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"inAppList.plist"];

// set '1' forKey "somebody"
NSArray *objectArray = [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:1],nil];
NSArray *keyArray = [[NSArray alloc] initWithObjects:@"someKey",nil];
NSDictionary *infodict = [[NSDictionary alloc] initWithObjects:objectArray forKeys:keyArray];

// write dictionary to file
BOOL didWrite = [infodict writeToFile:filePath atomically:YES];