writeToFile在模拟器上工作,但不在设备上

时间:2010-01-06 00:28:43

标签: iphone ios-simulator plist

我有一个我正在改变的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在设备上失败?

4 个答案:

答案 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);

它为我工作。

相关问题