writeToFile working on simulator, but not on devic

2019-05-11 05:22发布

I have a plist which I am changing:

NSString *finalPath = [path stringByAppendingPathComponent:@"KeyFrameFileByMovie.plist"];
NSMutableDictionary *keyFrameFileByMovie = [[NSMutableDictionary alloc] initWithContentsOfFile:finalPath];
[keyFrameFileByMovie setValue:keyFrameName forKey:movieName];
BOOL isOk = [keyFrameFileByMovie writeToFile:finalPath atomically:YES];

On the simulator isOk is 1 on the device isOK is 0

I don't think it is a case sensative issue, because I have a getting code that works:

NSString *finalPath = [path stringByAppendingPathComponent:@"KeyFrameFileByMovie.plist"];<br>
NSDictionary *plistData =[[NSDictionary dictionaryWithContentsOfFile:finalPath] retain];

Why is does writeToFile fail on the device?

4条回答
The star\"
2楼-- · 2019-05-11 05:55

What's the path you're originally starting with? Remember, the iPhone is case-sensitive, but the Mac is (usually) not, so that might be tripping you up. I would log finalPath to the log in both cases, and visually verify they're the same.

查看更多
太酷不给撩
3楼-- · 2019-05-11 05:55

Add "/" while appending the string

NSString *finalPath = [path stringByAppendingPathComponent:@"/KeyFrameFileByMovie.plist"];
查看更多
放我归山
4楼-- · 2019-05-11 06:07
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);

Its work for me.

查看更多
做个烂人
5楼-- · 2019-05-11 06:12

iPhone application has very strict directory structure. Unfortunately the permissions on the device vs simulator are diferent. So the only problem here can be that you are not saving in the Documents directory but in the MainBundle dir.

In the example above, what is the path value?

查看更多
登录 后发表回答