如何在iOS 5中的nsdefault中复制plist
这是我的代码:
NSError *error = nil;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *myPlistPath = [documentsDirectory stringByAppendingPathComponent:
[NSString stringWithFormat: @"%@.plist", @"Bookmark"] ];
// If it's not there, copy it from the bundle
NSFileManager *fileManager = [NSFileManager defaultManager];
if ( ![fileManager fileExistsAtPath:myPlistPath] ) {
NSString *pathToSettingsInBundle = [[NSBundle mainBundle]
pathForResource:@"Bookmark" ofType:@"plist"];
[fileManager copyItemAtPath:pathToSettingsInBundle toPath:myPlistPath error:&error];
}
[myPlistPath retain];
[myPlistPath release];
它在模拟器中正确运行,但在设备上崩溃。
答案 0 :(得分:1)
首先,NSDefault不是一个东西,提供的代码甚至不使用NSUserDefaults
,如果这就是你的意思,
现在的行:
[myPlistPath retain];
[myPlistPath release];
是完全多余的,摆脱它们。
现在在调试时使用一些常识。
Bookmark.plist
,检查文档目录中是否存在if (error) NSLog(@"Error:%@",error);
。检查模拟器和设备。if ( ![fileManager fileExistsAtPath:myPlistPath] )
记录生成的路径。下次遇到困难时,先做一些工作。