【发布时间】:2014-10-20 16:57:19
【问题描述】:
将 UIImage 分配给 UIImageView 的属性图像时出错
func connectionDidFinishLoading(connection: NSURLConnection!) {
var err: NSError
var jsonResult : NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary
println("\(jsonResult)")
if jsonResult.count > 0 {
let homepage = jsonResult.objectForKey("homepage") as NSMutableDictionary
if homepage.count > 0 {
let imageUrl = homepage.objectForKey("url_img") as NSString
let backgroundImageUrl = NSURL.URLWithString(imageUrl)
let backgroundImageData = NSData(contentsOfURL: backgroundImageUrl)
var image :UIImage = UIImage(data: backgroundImageData)
println("\(image)")
self.backgroundImage.image = image
}
}
}
它是来自 get 请求的委托函数。
backgroundImageData和image不是零,但它不起作用,我不明白。
我是 Swift 的新手:s
此代码适用于 Objective-C
NSString *imageUrl = [metaData objectForKey:@"url_img"];
NSURL *backgroundImageUrl = [NSURL URLWithString:imageUrl];
NSData *backgroundImageData = [NSData dataWithContentsOfURL:backgroundImageUrl];
self.backgroundImage.image = [UIImage imageWithData:backgroundImageData];
【问题讨论】:
-
你真的需要开始使用 swift 来充分发挥它的潜力。如果您可能并不总是有您应该使用的图像:
if let image = UIImage(data: backgroundImageData) { self.backgroundImage.image = image} 如果图像绝对不是零,那么我只能建议您尝试不调用 var 图像?在以前的 Xcode 测试版中,我偶尔会遇到将变量命名为与属性相同的问题。 -
这是一个问题,在 XCode 6.1 之前,初始化程序无法返回可选值,并且您在这里使用了两个不同的初始化程序,用于数据和图像。我会尝试立即使用
as Data?和as UIImage?将这些转换为可选项,然后看看你会得到什么。 -
登录图像时会打印什么?您是否将图像视图正确添加为子视图?检查 backgroundImage 的框架。检查它的superview。你把它正确连接了吗?你检查过它是否是正确的 URL 吗?为背景视图着色以确保它被正确添加并具有正确的大小。请说明您是如何设置 backgroundImage 属性的。
标签: ios swift uiimageview uiimage