Parse和Swift的可选类型

时间:2015-07-21 20:56:07

标签: swift parse-platform optional

if  var findPublisher:PFQuery = PFUser.query(){
    findPublisher.whereKey("objectId", equalTo:quote.objectForKey("publisher").objectId)//error here
    }

我收到错误任何可选类型'Any Object'的值?没有打开。我不知道我做错了什么。我是初学者所以请耐心等待我:)

2 个答案:

答案 0 :(得分:0)

这是一个你可以给每个引用指向用户对象的指针的地方,然后你可以在没有额外查询的情况下获得引用的发布者。但如果你想这样做,你会这样做:

let query = PFUser.query()!
query.whereKey("objectId", equalTo: (quote["publisher"] as! String)) // You can unwrap it as long as you are sure that quote is not nil, and the publisher is set.
query.getFirstObjectInBackgroundWithBlock({ (user: PFObject?, error: NSError?) in 
  // check for errors and use the object
})

这样做也可以创建Parse security issues,因为任何拥有应用ID和密钥的人都可以获得完整的用户列表。

答案 1 :(得分:0)

let findPublisher = PFUser.query()!
    findPublisher.whereKey("objectId", equalTo: (quote["publisher"] as! String))
        findPublisher.findObjectsInBackgroundWithBlock{
            (objects:[AnyObject]?, error:NSError?)->Void in

            if error == nil{
                let user:PFUser = (objects as NSArray).lastObject as! PFUser//error here
                cell.publisherLabel.text = user.username
        }
    }

我最终收到一条错误,指出AnyObject无法转换为NSArray?