NSData dataWithContentsOfURL 在 iOS 8 中专门返回 nil

NSData dataWithContentsOfURL returning nil specifically in iOS 8

我正在尝试使用 [NSData dataWithContentsOfURL:] 从本地文件中获取 NSData,但我得到的是 nil,即使 [NSFileManager defaultManager] 返回的 fileSize 是一个正整数。

令人惊讶的是,当基本 sdk 从 iOS 7 增加到 iOS 8 时,我遇到了这个问题。

我不确定它是 iOS 错误还是它在 iOS 7 基础 SDK 中起作用而不是在 iOS 8 中起作用的原因,但这是我在浪费后找到的解决方案几个小时调试代码:-(

使用[NSData dataWithContentsOfFile:(NSString *)]代替dataWithContentsOfURL

我的情况。它在 URL

中有一个 space

移除space

你确定你也通过了 Bundle 路径吗?

试试这个

NSString* path = [[NSBundle mainBundle].bundlePath stringByAppendingPathComponent:yourPath];
NSData* data = [NSData dataWithContentsOfURL:path];

NSData 和 URLs:有龙

+[NSData dataWithContentsOfURL:] 可以 return nil 出于多种原因。如果在尝试使用 URL 时出现任何问题,此方法将 return 为零。例如文件可能不存在,网络连接可能超时,或者 URL 甚至可能格式错误。 nil 被 returned 并且应用程序不知道为什么。

+ [NSData dataWithContentsOfURL:options:error:] 另一方面,会告诉调用者出了什么问题。当 nil 被 returned 时,error 参数将填充一个描述所发生问题的对象。使用此方法将直接回答 "why".

的问题

这两种方法都是同步方法,不鼓励将它们用于处理文件、网络资源,尤其是从网络资源提供的文件。这些方法将阻止调用者,并不是真正为这些用途而设计的。最好改用输入流或 NSURLSession。

可以参考enter link description here