writeToFile:atomically:在iOS 6.1.3上不起作用?

时间:2013-07-10 10:48:39

标签: ios objective-c

我有一个plist(NSDictionary)我打算通过用户数据输入来改变它。这就是我所做的。

NSString *path = (the path for the plist)
NSMutableDictionary *plistFile = [[NSDictionary dictionaryWithContentOfFile:path] mutableCopy];
[plistFile setObject:(an NSString object) forKey:(an NSString key)];
[plistFile writeToFile:path atomically:YES];

所以这就是我编码的内容。它适用于iPad 3 (new iPad) (iOS 6.1.2)和我的XCode (4.6) simulator (iOS 6)。但是,它不适用于我的iPad mini (iOS 6.1.3)。我发现了最后一步的问题。我写的时候

BOOL success = [plistFile writeToFile:path atomically:YES];
NSLog(@"%@",@(success));

控制台始终打印0表示不成功。但是在我的iPad 3和模拟器上,它打印1,这意味着成功。

这就是我能描述的全部内容,因为没有异常被抛出或其他输出。顺便说一句,我的iPad 3(它的工作原理)是越狱但iPad mini不是。不过,我使用我的开发者帐户在两台设备上进行协同设置。谁能帮我?或者,任何人都可以向我指出一个新的解决方案吗?

2 个答案:

答案 0 :(得分:3)

尝试使用

NSError * error = nil;
BOOL success = [plistFile writeToFile:path options:NSDataWritingAtomic error:&error];
NSLog(@"Success = %d, error = %@", success, error);

然后检查发生了什么错误。也许它可以帮助你。 并且您只能写入文档目录。你可能会遇到一些麻烦。

答案 1 :(得分:2)

如果您已完成此操作,我无法从您的代码中看到,但您的path需要是沙盒应用目录。

NSArray* pathList = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
NSString* path = [[NSString alloc] initWithFormat:@"%@", [pathList objectAtIndex:0]];