【问题标题】:creating an NSImage from downloaded NSData in Swift在 Swift 中从下载的 NSData 创建一个 NSImage
【发布时间】:2014-10-06 00:26:26
【问题描述】:

所以我使用 AlamoFire 库来下载一个图像 url,它返回 NSData 对象“avatarData”。但我不知道如何将这些信息保存到 NSImage 对象中,以便以后在视图中使用。

这是我转换为 NSImage 的最佳尝试:

private func GetAvatar(avatarHash: String) {
    let avatar = "https://trello-avatars.s3.amazonaws.com/\(avatarHash)/30.png"
    Alamofire.request(.GET, avatar)
        .response {(request, response, avatarData, error) in
            if (error != nil) {
                self.handleConnectionError(error)
            } else {
                println(avatarData)
                let backgroundImage = NSImage(avatarData: NSData)
            }
    }

}

我尝试了几种语法变体,但我通常会遇到错误:

expected member name or constructor call after type name

和/或

missing argument for parameter 'flipped' in call


这是println(avatarData) 的示例

Optional(<89504e47 0d0a1a0a 0000000d 49484452 0000001e 0000001e 08020000 01c35509 63000008 72494441 5448c705 ...

【问题讨论】:

    标签: macos swift nsdata nsimage


    【解决方案1】:

    avatarData 是一个 NSData,NSImage 有一个接受 NSData 的构造函数,使用它即可:

    let image = NSImage(data:avatarData!)
    

    【讨论】:

    • 谢谢大卫! XCode 编译器错误地表示它不能“隐式地向下转换 avatarData 以键入 NSData”。使用let backgroundImage = NSImage(data: avatarData as NSData) 显式转换类型就可以了。我不知道这样做是否有不利之处或其他任何东西..
    • 我从来没有使用过 Alamodome,所以不太清楚,但从命名上我认为它始终是一个 MSData。为了安全起见,您可能应该将其包装在 if let 语句中
    【解决方案2】:

    您可以使用我编写的一个类,它简化了从网络异步下载图像并使用 NSImageView 和 Swift 显示它们(由其他人从 Objective-C 版本移植): https://github.com/davecom/DKAsyncImageView

    【讨论】:

    • 看起来很酷的库 davecom,它不符合我对这个项目的需求,但我以后一定会考虑它:)
    猜你喜欢
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 2011-08-11
    相关资源
    最近更新 更多