【发布时间】:2015-05-06 23:16:23
【问题描述】:
我正在为 AVURLAsset 的一种方法准备 URL:
+ (AVURLAsset *)URLAssetWithURL:(NSURL *)URL options:(NSDictionary *)options
我的 URL 属于一个文件,该文件写入我的应用程序的文档路径。 NSLog路径的结果是:
/var/mobile/Containers/Data/Application/E0E64E72-9A47-4E62-B9C6-818AB8BF3F4C/Documents/audio.wav
得到NSString *path后,我尝试通过[NSURL URLWithString:path]和[NSURL fileURLWithPath:path]将NSString转换为NSURL,但URLAssetWithURL都不正确。
URLWithString 的错误是:
Error Domain=AVFoundationErrorDomain Code=-11800 "该操作可能 未完成” UserInfo=0x170269f80 {NSUnderlyingError=0x17405f440 "操作无法完成。(OSStatus 错误 -12780.)", NSLocalizedFailureReason=发生未知错误(-12780), NSLocalizedDescription=操作无法完成}
而fileURLWithPath 使应用程序崩溃。
我知道url = [[NSBundle mainBundle] URLForResource:fileURL withExtension:@"wav"] 适合这种情况。但我也想让本地文件的 url 适合 URLAssetWithURL。任何想法?谢谢。
【问题讨论】:
-
fileURLWithPath是将路径转换为文件 URL 的正确方法。你说它“使应用程序崩溃”。究竟发生了什么?文件 URL 是否正常?您是否确认确实在该位置找到了该文件? -
@Rob 当它崩溃时,Xcode 只显示一条消息:终止调用抛出异常(lldb)。并且崩溃发生在文件 URL 可以登录控制台之前(相同的代码,除了将 URLWithString 替换为 fileURLWithPath)。如果使用 URLWithString,则文件 URL 为“file:///var/mobile/Containers/.../Documents/audio.wav”。
标签: ios objective-c