iPhone-UITableView使用plist填充在模拟器中工作,但在iDevice上不工作



我的问题是,我为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];文件将不会被写入,因为捆绑包资源是只读的。

这些信息应该在某种程度上对你有所帮助。

相关内容

最新更新