我在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文件正在文档目录中复制,因为我可以在组织器和我的设备选项卡中看到它。此外,我能够成功从文档目录中读取文件。
可能只是一个很小的错误,但真的无法弄清楚什么是错的。
答案 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];