我有一个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不是。不过,我使用我的开发者帐户在两台设备上进行协同设置。谁能帮我?或者,任何人都可以向我指出一个新的解决方案吗?
答案 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]];