我试图将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
答案 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中的新数组语法