我做了一个依赖于读写plist文件的应用程序。当我在iPhone模拟器中运行应用程序时,这很有效,但是当我在iPhone上测试它时,它根本不起作用。我还制作了一个带有演示数据的.txt格式的预制文本文件。当我运行此文件时,该应用程序正常运行。
所有的阅读和写作都是在类似这样的课程中完成的:
-(void)saveArray:(NSMutableArray *)inputArray
{
albumArray = inputArray;
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentFolder = [path objectAtIndex:0];
NSString *filePath = [documentFolder stringByAppendingFormat:@"albums.plist"];
[albumArray writeToFile:filePath atomically:YES];
}
更新:更改了" stringByAppendingFormat"中的字符串to" stringByAppendingPathComponent"它现在似乎工作。非常感谢!你们做了我的一天。
答案 0 :(得分:0)
检查plist名称的拼写以及大小写,设备对于文档是区分大小写的,但模拟器不是。还尝试从设备中删除应用程序并重新安装它?
writeToFile:atomically:
返回一个bool,所以请检查它是否甚至无法写入路径。检查文件路径字符串,确保它是您想要的位置。
答案 1 :(得分:0)
您确定文件夹已存在吗? 这是我用来获取文件路径的函数:
- (NSString*) pathToSavedAlbums
{
NSURL *applicationSupportURL = [self applicationDataDirectory];
if (! [[NSFileManager defaultManager] fileExistsAtPath:[applicationSupportURL path]])
{
NSError *error = nil;
[[NSFileManager defaultManager] createDirectoryAtPath:[applicationSupportURL path]
withIntermediateDirectories:YES
attributes:nil
error:&error];
if (error)
{
NSLog(@"error creating app support dir: %@", error);
}
}
NSString *path = [[applicationSupportURL path] stringByAppendingPathComponent:@"albums.plist"];
return path;
}