Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
writeToFile:原子性:在iOS 6.1.3上不工作?_Ios_Objective C - Fatal编程技术网

writeToFile:原子性:在iOS 6.1.3上不工作?

writeToFile:原子性:在iOS 6.1.3上不工作?,ios,objective-c,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

我有一个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];
这就是我写的代码。它在
ipad3(新iPad)(ios6.1.2)
和我的
XCode(4.6)模拟器(ios6)
上运行良好。但是,它在我的
ipadmini(ios6.1.3)
上不起作用。我已经找到了最后一步的问题。当我写

BOOL success = [plistFile writeToFile:path atomically:YES];
NSLog(@"%@",@(success));
控制台总是打印0,这意味着它不会成功。但在我的iPad3和模拟器上,它打印1,这意味着成功

这就是我所能描述的,因为没有抛出异常或其他输出。顺便说一句,我的iPad3(它在上面工作)已经越狱了,但iPadMini却没有。然而,我使用我的开发者帐户在两台设备上进行代码设计。有人能帮我吗?或者有人能给我指一个新的解决方案吗?

试着使用

NSError * error = nil;
BOOL success = [plistFile writeToFile:path options:NSDataWritingAtomic error:&error];
NSLog(@"Success = %d, error = %@", success, error);
然后检查发生了什么错误。也许它能帮助你。
并且只能写入文档目录。你的路径可能有问题。

如果你这样做了,我无法从你的代码中看到,但是你的
路径需要是沙盒应用程序目录

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

类似的问题:这个相关的问题看起来很相关-如果它在越狱设备上工作,但在非越狱设备上工作,我想知道您是通过什么路径编写文件的。是
文档
文件夹吗?它不能是捆绑包或应用程序沙箱之外的任何地方。序列化过程不支持所有开箱即用的对象。您确定要在磁盘上序列化NSArray、NSString、NSNumber、NSData、NSDictionary或其可变版本吗?a你在哪条路径上写作,看起来像是权限问题?是的,我发现了问题。我直接写入了资源路径。但在越狱设备上是允许的吗?我可以通过iFile看到我刚才在程序中编写的文件。@zyl1024它可以在越狱设备和模拟器上工作,但不能在非越狱设备上工作。不要给包裹写信。写入
文档
文件夹。@谢谢。好几天来我一直被这件事弄糊涂了。