我想将数组写入 plist,当我在文档文件夹中手动创建 plist 时效果很好。
但是当我检查 plist 是否存在并且如果不从主包中的 plist 创建它时,什么也不会发生......
我按照 Property List Programming Guide 那样做了这个已经写完了。
NSString *plistRootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *plistPath = [plistRootPath stringByAppendingPathComponent:@"list.plist"];
if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath]) {
plistPath = [[NSBundle mainBundle] pathForResource:@"list" ofType:@"plist"];
}
我错过了什么?
编辑:
我在一个单独的应用程序中尝试了该功能,并且它有效。 所以我又试了一次:
NString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *plistPath = [rootPath stringByAppendingPathComponent:@"list.plist"];
self.ListArray = [NSMutableArray arrayWithContentsOfFile:plistPath];
NSLog(@"preSave: %@", [ListArray count]);
NSLog(@"%@", plistPath);
日志显示:
2011-02-16 16:54:56.832 ListApp[3496:207] .../Library/Application Support/iPhone Simulator/4.0.2/Applications/267F55E4-A46A-42E0-9E1C-EAF26846F75F/Documents/list.plist
但是目录中没有文件!
最佳答案
NSString *DocPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
filePath=[DocPath stringByAppendingPathComponent:@"AlarmClock.plist"];
if (![[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
NSString *path=[[NSBundle mainBundle] pathForResource:@"AlarmClock" ofType:@"plist"];
NSLog(@"file path: %@",filePath);
NSDictionary *info=[NSDictionary dictionaryWithContentsOfFile:path];
[info writeToFile:filePath atomically:YES];
}
//***试试这个...
关于iphone - 创建一个 plist 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5017461/