我的问题是,我为iPhone/iPad制作了一个网络浏览器,并在添加书签时测试了书签系统和表视图plist数据更新。它在模拟器端工作。但当我用iPhone测试应用程序时,它没有显示更新表视图。我确实通过xcode向plist添加了一些数据,我添加的数据显示在iPhone上,但仍然没有更新以显示你通过应用程序输入的新条目。plist文件被称为"bookmarks.plist"。问题是什么?
这里是写入bookmarks.list 的代码
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDirectory = [paths objectAtIndex:0];
NSString *plistPath = [documentDirectory stringByAppendingPathComponent:@"bookmarks.plist"];
if (![fileManager fileExistsAtPath:plistPath]) {
plistPath = [[NSBundle mainBundle] pathForResource:@"bookmarks" ofType:@"plist"];
//[[NSFileManager defaultManager] copyItemAtPath:plistPath toPath:plistPath error:NULL];
}
NSMutableArray *dataRoot = [NSMutableArray arrayWithContentsOfFile:plistPath];
NSMutableDictionary *item = [[NSMutableDictionary alloc] init];
[item setObject: _titleField.text forKey:@"title"];
[item setObject:_urlField.text forKey:@"url"];
[dataRoot addObject:item];
[dataRoot writeToFile:plistPath atomically:YES];
看起来您的plist文件不在设备上的documents目录中,也没有在运行时将其复制到那里(LOC被注释)。
所以plistPath
将是nil
如果您的plistPath
是从NSBundle创建的,[dataRoot writeToFile:plistPath atomically:YES];
文件将不会被写入,因为捆绑包资源是只读的。
这些信息应该在某种程度上对你有所帮助。