【问题标题】:Calling -createDirectoryAtURL: causes crash调用 -createDirectoryAtURL: 导致崩溃
【发布时间】:2011-11-25 10:28:06
【问题描述】:

我现在真的很困惑。这是我的一段代码:

NSFileManager *manager = [NSFileManager defaultManager];

NSURL *backup = [self applicationDocumentsDirectory];
backup = [backup URLByAppendingPathComponent:@"Old_Data_File"];

[manager createDirectoryAtURL:backup withIntermediateDirectories:YES attributes:nil error:nil];

执行此代码时,它会在消息的最后一行崩溃

-[NSFileManager createDirectoryAtURL:withIntermediateDirectories:attributes:error:]:无法识别的选择器发送到实例 0x5e59220

这怎么可能是一个无法识别的选择器?

编辑:

manager 不是 nil 并将backup 打印到控制台会导致

{type = 15, string = file://localhost/Users/fabian/Library/Application%20Support/iPhone%20Simulator/4.3.2/Applications/D37C5B93-A778-4555-8953-814F823B1116/Documents/Old_Data_File,编码 = 134217984,基数 = (null)}

直到Old_Data_File路径存在,最后一个组件应该由文件管理器创建...

【问题讨论】:

  • 确保manager 不为空。另外,backup 是有效的文件 URL 吗?
  • 您在哪个版本的 iOS 上进行测试? (此方法为iOS 5+/OS X 10.7+。)

标签: iphone objective-c ios ipad nsfilemanager


【解决方案1】:

哦...您的目标是 iOS 5.0 及更高版本吗?此 API 在 iOS 4.3 上不存在。

【讨论】:

  • 哦!我现在才看到NS_AVAILABLE(10_7, 5_0)。所以我应该使用采用NSString的方法?
  • 如果你想支持 iOS 4.3、3.X 甚至 2.0...是的。
【解决方案2】:

你是这个意思吗?

 (BOOL)createDirectoryAtPath:(NSString *)path withIntermediateDirectories:(BOOL)createIntermediates attributes:(NSDictionary *)attributes error:(NSError **)error

AtPath 而不是 AtURL?

【讨论】:

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