【问题标题】:NSURL property 'absoluteURL'NSURL 属性'absoluteURL'
【发布时间】:2014-09-27 19:43:34
【问题描述】:

我正在开发自己的应用程序,该应用程序的 iPhone 版本已经在 Apple AppStore 上,现在我正在开发 iPad 版本。功能(当然)几乎相同,但用户界面不同。 iPhone版本运行良好。

现在我在 XCode 中遇到了一个奇怪的错误。

我的应用使用 SoundCloud API 流式传输一些音乐并浏览不同用户的歌曲。在 iPhone 上,我可以显示小缩略图,因为 ImageView 非常小(~40x40px)。 但在我的 iPad 上,我需要更大的图像,所以我必须获取更大的艺术品图像和用户头像。

为此,我有两种不同的方法。第一个获取更大的 Artwork Image,第二个获取更大的用户头像(个人资料图片)。

- (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

我做错了什么?

【问题讨论】:

    标签: ios objective-c nsurl


    【解决方案1】:

    一定是这一行:

    NSURL* avatarURL = user.avatarURL;
    

    将 avatarURL 设置为字符串而不是 NSURL。在源头上修复它(确保用户上的方法回答真正的 NSURL,而不是 NSString),或者在你得到它时强制类型:

    NSURL* avatarURL = [NSURL URLWithString:user.avatarURL];
    

    【讨论】:

    • 我的“User.h”包含这个:@property NSURL* avatarURL;
    • 当然,但是设置它的人正在将它设置为一个字符串。
    • 我会试试的。但为什么它在“bigCoverURLforTrack”方法中起作用?
    • 因为设置 track.coverURL 的人做对了并且设置了 NSRUL,而不是字符串。
    • 我没有找到错误的代码行,检查了所有内容。甚至调试器也说它是一个 NSURL 对象。没关系,如果使用您的解决方法,它可以工作。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-04-20
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多