我有一个我正在改变的plist:
NSString *finalPath = [path stringByAppendingPathComponent:@"KeyFrameFileByMovie.plist"];
NSMutableDictionary *keyFrameFileByMovie = [[NSMutableDictionary alloc] initWithContentsOfFile:finalPath];
[keyFrameFileByMovie setValue:keyFrameName forKey:movieName];
BOOL isOk = [keyFrameFileByMovie writeToFile:finalPath atomically:YES];
在模拟器上,isOk为1 在设备上isOK是0
我不认为这是一个案例敏感问题,因为我有一个有效的代码:
NSString *finalPath = [path stringByAppendingPathComponent:@"KeyFrameFileByMovie.plist"];<br>
NSDictionary *plistData =[[NSDictionary dictionaryWithContentsOfFile:finalPath] retain];
为什么writeToFile在设备上失败?
答案 0 :(得分:6)
iPhone应用程序具有非常严格的目录结构。不幸的是,设备与模拟器的权限是不同的。所以这里唯一的问题可能是你没有保存在Documents目录中,而是保存在MainBundle目录中。
在上面的示例中,路径值是什么?
答案 1 :(得分:4)
您最初的路径是什么?请记住,iPhone是区分大小写的,但Mac(通常)不是,所以这可能会使你绊倒。在这两种情况下,我都会将finalPath记录到日志中,并在视觉上验证它们是否相同。
答案 2 :(得分:3)
附加字符串
时添加“/”NSString *finalPath = [path stringByAppendingPathComponent:@"/KeyFrameFileByMovie.plist"];
答案 3 :(得分:0)
NSString *applicationDocumentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *storePath = [applicationDocumentsDir stringByAppendingPathComponent:@"default.txt"];
NSString *stringFilepath = [docPath stringByAppendingPathComponent:@"configlocaljson.json"];[replacedString writeToFile:stringFilepath atomically:YES encoding:NSUTF8StringEncoding error:nil];
NSError * error = nil;
BOOL success = [replacedString writeToFile:stringFilepath atomically:YES encoding:NSUTF8StringEncoding error:&error];
NSLog(@"Success = %d, error = %@", success, error);
它为我工作。