ios - "unrecognized selector sent to instance" swift

标签 ios swift

我没有收到任何错误或任何错误,但是当我运行应用程序时它崩溃了。 我得到的日志是“由于未捕获的异常‘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/

相关文章:

ios - UIScreenEdgePanGestureRecognizer 无法识别右边缘的手势

IOS with Rails 后端 Amazon S3 直接上传

ios - UITableViewCell contentView 具有 autoResizingMask 约束 'UIView-Encapsulated-Layout-Height' 与自动调整大小的自动布局冲突

swift - 来自 NSView 子类的 performSegueWithIdentifier?

ios - 更改布局时,UICollectionViewLayout不会更新zIndex

javascript - Node.js 服务器的哪个 Websocket 库最适合 iOS 客户端?

javascript - iOS 7 记住这张卡片回调

ios - Admob Banner 广告在 SpriteKit 切换场景时变为 Nil

ios - 在 Swift 中使用 CLLocationManager 获取当前位置

ios - 如何将一个SCNNode指向另一个SCNNode?