2010-01-06 161 views
3

我有我改变的plist:将writeToFile工作的模拟器,但不是在设备

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在设备上失败?

回答

6

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

在上面的例子中,的路径是什么价值?

4

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

+0

这几乎肯定的问题。 – 2010-01-06 07:03:34

+0

我很抱歉,我一直工作到很晚...... 的ISOK设备上返回0,这意味着这是另一个问题 – iddober 2010-01-06 09:51:15

3

添加 “/”,而将字符串

NSString *finalPath = [path stringByAppendingPathComponent:@"/KeyFrameFileByMovie.plist"]; 
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); 

它为我工作。

相关问题