3

我有一个要更改的 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

4 回答 4

6

iPhone 应用程序具有非常严格的目录结构。不幸的是,设备与模拟器上的权限是不同的。所以这里唯一的问题可能是您没有保存在 Documents 目录中,而是保存在 MainBundle 目录中。

在上面的示例中,路径值是多少?

于 2010-01-06T11:57:48.820 回答
4

你最初开始的路径是什么?请记住,iPhone 区分大小写,但 Mac(通常)不区分大小写,所以这可能会让您感到困惑。在这两种情况下,我都会将 finalPath 记录到日志中,并直观地验证它们是否相同。

于 2010-01-06T00:50:12.657 回答
3

在附加字符串时添加“/”

NSString *finalPath = [path stringByAppendingPathComponent:@"/KeyFrameFileByMovie.plist"];
于 2011-10-30T06:56:18.673 回答
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);

它为我工作。

于 2013-12-26T08:21:36.067 回答