ios - NSURL 属性 'absoluteURL'

标签 ios objective-c nsurl

我正在开发自己的应用程序,此应用程序的 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/

相关文章:

cocoa - 将 NSURL 基本 URL 更改为另一个基本 URL

Swift:如何在 NSURL 中引用本地镜像

ios - 支持 iOS 6.0 作为部署目标的 Xcode 的最高版本是什么?

ios - React Native api 调用不会在远程 Debug模式之外发生(仅限 iOS)

objective-c - 从应用首次打开时获取日期

objective-c - 在 WebView 被所有者窗口关闭之前调用什么方法?

ios - SpriteKit 在运行带有大型 tilemap (JSTileMap) 的游戏时使用 95-100% CPU

ios - 设置导航栏返回按钮图片

objective-c - 查询 UITableView 选定的单元格以显示 "Delete"按钮

swift - 如何快速从网站调用/获取日期和时间