从AnyObject转发到UIImage [] - Swift

时间:2014-06-22 21:19:07

标签: uiimage swift downcast

我试图将valueForKeyPath的结果转换为UIImages数组。在尝试这样做时,我遇到了这个错误

  

架构i386的未定义符号:     " TToFC9TableView19TableViewControllers6photosGSqGSaCSo7UIImage ",引自:         JustPostedTableViewController.o中的__TFC9TableView29JustPostedTableViewController11fetchPhotosfS0_FT_T_   ld:找不到架构i386的符号   clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

这是我在swift中对代码的尝试: propertyListResults是一个NSDictionary,valueForKeyPath中的参数是一个String

var photos : AnyObject = (propertyListResults as AnyObject).valueForKeyPath(flickrFetcher.FLICKR_RESULTS_PHOTOS)

self.photos = photos as? UIImage[]

代码的工作Objective-C版本是

NSArray *photos = [propertyListResults valueForKeyPath:FLICKR_RESULTS_PHOTOS];
self.photos = photos

1 个答案:

答案 0 :(得分:2)

如果你在"__TToFC9TableView19TableViewControllers6photosGSqGSaCSo7UIImage__"上运行swift-demangle,你会得到:

@objc TableView.TableViewController.photos.setter : (ObjectiveC.UIImage[])?

这意味着链接器没有在TableViewController上找到照片的setter。您似乎正在使用TableViewController而不是您自己的具有photos属性的子类。

此外,photos as? UIImage[]返回一个Optional,因为它可能会失败。您应该执行以下操作:

if let images : [UIImage] = photos as? [UIImage] {
    self.photos = images
}

检查photos是否可以转换为[UIImage]。如果可以,则将其分配给self.photos

编辑:将UIImage数组语法更新为beta 3中的新数组语法