我正在开发自己的应用程序,此应用程序的 iPhone 版本已经在 Apple AppStore 上,现在我正在开发 iPad 版本。功能(当然)几乎相同,但用户界面不同。 iPhone 版本运行良好。
现在我在 XCode 中遇到了一个奇怪的错误。
我的应用程序使用 SoundCloud API 流式传输一些音乐并浏览不同用户的歌曲。在 iPhone 上我可以显示小的缩略图,因为 ImageViews 非常小(~40x40 像素)。 但是在我的 iPad 上,我需要更大的图像,所以我必须获取更大的艺术品图像和用户头像。
为此,我有两种不同的方法。第一个获取更大的艺术作品图像,第二个获取更大的用户头像(个人资料图片)。
- (NSURL *)bigCoverURLforTrack:(Track *)track {
if(track.coverURL) {
NSURL* coverURL = track.coverURL;
NSString* coverLarge = coverURL.absoluteString;
NSString* coverBig = [coverLarge stringByReplacingOccurrencesOfString:@"-large" withString:@"-t500x500"];
return [[NSURL alloc] initWithString:coverBig];
}
else return [[NSURL alloc] init];
}
- (NSURL*)bigAvatarURLforUser:(User*)user {
if(user.avatarURL) {
NSURL* avatarURL = user.avatarURL;
NSString* avatarLarge = avatarURL.absoluteString;
NSString* avatarBig = [avatarLarge stringByReplacingOccurrencesOfString:@"-large" withString:@"-t500x500"];
return [[NSURL alloc] initWithString:avatarBig];
}
else return [[NSURL alloc] init];
}
第一种方法工作正常,但第二种方法每次都崩溃。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString absoluteString]: unrecognized selector sent to instance
我做错了什么?
最佳答案
一定是这一行:
NSURL* avatarURL = user.avatarURL;
正在将 avatarURL 设置为字符串而不是 NSURL。在源头上解决这个问题(确保用户的方法回答一个真正的 NSURL,而不是 NSString),或者当你得到它时强制类型是这样的:
NSURL* avatarURL = [NSURL URLWithString:user.avatarURL];
关于ios - NSURL 属性 'absoluteURL',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26078501/