【问题标题】:iPhone Xcode 4 file bundle problemiPhone Xcode 4 文件捆绑问题
【发布时间】:2011-06-03 14:23:13
【问题描述】:

我正在开发一个应用程序,它需要保存文件,而不是在 tableview 上显示标题,它在 xcode 3 上运行良好,现在我有 xcode 4,当我加载 tableView 和所有文件的标题时由于访问不正确而崩溃。这些文件存储在主包中。我注意到,如果我删除 viewDidLoad 的内容(我在其中加载文件列表),应用程序工作正常!这是我viewDidLoad的内容:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

list = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:NULL];

谁能帮帮我?

【问题讨论】:

    标签: iphone file xcode4


    【解决方案1】:

    我建议检查文件列表是否为空。

    NSError* error;
    list = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:&error];
    
    if (!list)
    {
        NSLog(error);
    }
    

    可能是由于某些 SDK 更新,您正在访问的目录无法访问或为空。但是由于您的程序崩溃,这表明您的list 变量是0x0

    【讨论】:

    • 我尝试在调试窗口中返回列表内容。实际上,它返回目录中的文件。它不是 0x0 列表。即使我尝试您的建议,也没有任何改变。
    • @Riccardo,上面代码中NSError对象的内容是什么?
    【解决方案2】:

    从外观上看,list 似乎是一个 ivar。如果这是正确的,那么您将自动释放的值分配给list。如果您稍后访问它,您将尝试访问已释放的对象并因此出现错误。如果您为list 定义了retained 属性,那么您可以这样做,

    self.list = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:NULL];
    

    如果您由于某种原因无法拥有一个属性,那么只需像这样简单地调用它,

    list = [[[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:NULL] retain];
    

    【讨论】:

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