NSURL设置为“nil”而不是路径

时间:2013-08-07 19:54:21

标签: iphone ios objective-c ios6

我有以下代码:

NSURL* saveToURL = [[NSURL alloc] initWithString:[self.recording filePath]];
NSLog([saveToURL absoluteString]);
NSLog(@"?");
NSLog([self.recording filePath]);

输出以下

2013-08-07 15:51:32.182 SpyApp[49799:c07] ?
2013-08-07 15:51:32.183 SpyApp[49799:c07] /Users/Mike/Library/Application Support/iPhone Simulator/6.1/Applications/C9EDE058-5C8B-4B75-8638-D5A4265B348F/Documents/Recordings/ujaxvehvjlgwfuw

在调试器中,我还可以看到saveToURLnil,尽管[self.recording filePath]返回/Users/Mike/Library/Application Support/iPhone Simulator/6.1/Applications/C9EDE058-5C8B-4B75-8638-D5A4265B348F/Documents/Recordings/ujaxvehvjlgwfuw

为什么?我该如何解决?

1 个答案:

答案 0 :(得分:3)

因为filePath是路径,而不是URL。要创建文件URL,请使用其他方法:

NSURL* saveToURL = [[NSURL alloc] initFileURLWithPath:[self.recording filePath]];

另外,NSLog的第一个参数应该始终是一个常量字符串,你永远不知道filePath何时可以有一个%

NSLog(@"%@", [saveToURL absoluteString]);
NSLog(@"?");
NSLog(@"%@", [self.recording filePath]);