Xcode 7 错误代码“无法转换值类型([AnyObject]

Posted

技术标签:

【中文标题】Xcode 7 错误代码“无法转换值类型([AnyObject]【英文标题】:Xcode 7 Error Code "Cannot convert value type([AnyObject] 【发布时间】:2015-11-23 19:07:26 【问题描述】:

这是我的代码的副本,错误是给我的,错误在它显示query.findobjectsInBackgroundWithBlock 的行上。完整的错误消息是:`Cannot convert value type ([AnyObject]!, NSError!) -> Void to expected argument type 'PFQueryArrayResultBlock?'

// Retrieve Messages
func retrieveMessages() 

    // Create a new PFQuery
    var query:PFQuery = PFQuery(className: "Message")

    // Call findobjectsinbackground
    query.findObjectsInBackgroundWithBlock (objects:[AnyObject]!, error:NSError!) -> Void in

    // Clear the messagesArray

        self.messageArray = [String]()
        // Loops through the objects
    for messageObject in objects 

        // Retrieve the text column value of each PFObject
        let messageText:String? = (messageObject as! PFObject)["Text"] as? String
        // Assign it into our messagesArray
        if messageText != nil 
            self.messageArray.append(messageText!)
        
    
        // Reload the tableview
    self.messageTableView.reloadData()
    

【问题讨论】:

您确定([AnyObject]!, NSError!) -> Void 是该块的正确签名吗?我会查找 PFQueryArrayResultBlock 并复制该声明... 【参考方案1】:

方法签名在 Swift 2.0 中使用 Parse SDK 1.10.0 进行了改进。将[AnyObject]! 替换为[PFObject]?[PFObject] 是可选的,因为 Swift 不知道它是否存在。

func retrieveMessages() 

var query:PFQuery = PFQuery(className: "Message")

query.findObjectsInBackgroundWithBlock  (objects: [PFObject]?, error: NSError?) -> Void in

    self.messageArray = [String]()

    for messageObject in objects 

        let messageText:String? = (messageObject as! PFObject)["Text"] as? String

        if messageText != nil 
            self.messageArray.append(messageText!)
        
    

    self.messageTableView.reloadData()


【讨论】:

以上是关于Xcode 7 错误代码“无法转换值类型([AnyObject]的主要内容,如果未能解决你的问题,请参考以下文章

操场上的 NSMutableArray 导致 Xcode 7 出现错误

UITableVIewCell 错误 Xcode 7 / Swift 2

将 Xcode 6 beta 6 更新到 beta 7 后出现“可选错误”

带有 iOS 9.2 dataWithContentsOfURL 的错误 Xcode 7.3

Swift 开发的代码在 Xcode 8.x 或 Xcode 7.x 中不起作用

升级到 xcode 7 后出现代码问题