我没有收到任何错误或任何错误,但是当我运行应用程序时它崩溃了。 我得到的日志是“由于未捕获的异常‘NSInvalidArgumentException’而终止应用程序,原因:‘-[MPConcreteMediaItem imageWithSize:]:无法识别的选择器发送到实例 0x14eefa3b0’”。
我认为导致此问题的行是这一行:
cell?.imageView?.image =sortedResults[indexPath.row].imageWithSize(imageSize)
因为当我删除它/取消注释它时,一切正常。
imageSize
是一个 CGSize 变量。
整个代码:
let startTime: NSTimeInterval = NSDate().timeIntervalSince1970
let songsQuery: MPMediaQuery = MPMediaQuery.songsQuery()
let songsArray: [MPMediaItem] = songsQuery.items!
let songsNSArray : NSArray = NSArray(array: songsArray)
let descriptor: NSSortDescriptor = NSSortDescriptor(key: MPMediaItemPropertyLastPlayedDate, ascending: false)
let sortedResults: NSArray = songsNSArray.sortedArrayUsingDescriptors([descriptor])
let finishTime: NSTimeInterval = NSDate().timeIntervalSince1970
NSLog("Execution took %f seconds to return %i results.", finishTime - startTime, sortedResults.count)
cell?.textLabel?.text = sortedResults[indexPath.row].title
cell?.detailTextLabel?.text = sortedResults[indexPath.row].artist
cell?.imageView?.image = sortedResults[indexPath.row].imageWithSize(imageSize)
最佳答案
我猜测位于sortedResults[indexPath.row]中的对象不是你想象的那样,因此它没有方法imageWithSize()
。对象可能为零?
编辑
为了安全起见,您可以在使用数组中的对象之前执行类似的操作:
if let validObject = sortedResults[indexPath.row] as MPConcreteMediaItem? {
// Can now use validObject safely, since we have checked that it is in fact an instance of MPConcreteMediaItem
}
关于ios - "unrecognized selector sent to instance" swift ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36310528/