【问题标题】:iPhone - UITableView populates using plist works in Simulator but does not on iDeviceiPhone - UITableView 使用 plist 填充在模拟器中有效,但在 iDevice 上无效
【发布时间】:2012-12-02 18:41:05
【问题描述】:

我的问题是我为 iPhone/iPad 制作了一个网络浏览器,并且我在添加书签时测试了书签系统和 tableview plist 数据更新。它适用于模拟器端但是当我使用我的 iPhone 测试应用程序时,它没有显示更新 tableview 我确实通过 xcode 添加了一些数据到 plist 并且我添加的数据显示在 iPhone 上,但仍然没有更新以显示新的您通过应用程序输入的条目 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];

【问题讨论】:

  • 标点符号。使用它,它很好。至于您的 plist 文件,您确定它不是“Bookmarks.plist”或类似的东西吗? iOS 设备具有区分大小写的文件系统,而 iOS 模拟器在具有标准驱动器格式的 Mac 上运行时则没有。
  • xcode 标题中的文件看起来像这样“bookmarks.plist”
  • 在设备上运行时,plistPath 在运行时是否填充或为零?
  • plist (plistPath) 在开始时是空的,但是当用户将网站添加到文件时应该填满

标签: iphone uitableview plist simulator bookmarks


【解决方案1】:

看起来您的 plist 文件不在设备上的文档目录中,您也没有在运行时将其复制到那里(已注释 LOC)。

所以plistPath 将是nil

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

这些信息应该对您有所帮助。

【讨论】:

    猜你喜欢
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多