我正在尝试将 NSdata 转换为 NSUrl,我在互联网上找到了这个方法:
NSString *urlString = [[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding];
NSURL *url = [[NSURL alloc] initWithString:urlString];
[session sendResourceAtURL:url withName:@"Resource" toPeer:peerID withCompletionHandler:nil];
对我来说似乎没问题,但应用程序在第二行崩溃并给出错误:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL initWithString:relativeToURL:]: nil string parameter'
不明白为什么...
最佳答案
myData 不是 UTF-8 编码的。
来自 NSString 文档:
Returns nil if the initialization fails for some reason (for example if data does not represent valid data for encoding).
您应该始终检查此类情况...
NSString *urlString = [[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding];
NSURL *url;
if (urlString) {
url = [[NSURL alloc] initWithString:urlString];
} else {
// handle failure
}
此外,确保在创建 myData
对象时使用 UTF8 编码,或者从 NSUTF8StringEncoding
切换到正确的编码类型。
关于ios - 将 NSData 转换为 NSUrl nil 字符串参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19082082/