调用 -createDirectoryAtURL: 导致崩溃
Posted
技术标签:
【中文标题】调用 -createDirectoryAtURL: 导致崩溃【英文标题】:Calling -createDirectoryAtURL: causes crash 【发布时间】: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/f***/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+。)
【参考方案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?
【讨论】:
以上是关于调用 -createDirectoryAtURL: 导致崩溃的主要内容,如果未能解决你的问题,请参考以下文章