iPhone - UITableView在Simulator中使用plist工作填充,但在iDevice上不支持

时间:2012-12-02 18:41:05

标签: iphone uitableview plist simulator bookmarks

我的问题是我正在为iPhone / iPad制作网页浏览器,我在添加书签时测试了书签系统和tableview plist数据更新。它可以在模拟器端工作但是当我使用我的iPhone测试应用程序时,它没有显示更新tableview我通过xcode向plist添加了一些数据,我添加的数据显示在iPhone上但仍然没有更新显示新的您通过app plist文件输入的条目称为“bookmarks.plist”,问题是什么?

这里写入bookmarks.plist的代码

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];

1 个答案:

答案 0 :(得分:0)

看起来你的plist文件不在设备上的文档目录中,也不是你在运行时将它复制到那里(注释了LOC)。

所以plistPath将为nil

如果您的plistPath是从NSBundle创建的,则 [dataRoot writeToFile:plistPath atomically:YES]; 文件将不会被写入,因为包资源是只读的。

此信息可以在某种程度上帮助您。