Ios 检索和递增解析对象时出现的问题

Ios 检索和递增解析对象时出现的问题,ios,swift,parse-platform,pfquery,pfobject,Ios,Swift,Parse Platform,Pfquery,Pfobject,我试图检索一个PFObject,在投票计数中添加1,然后重新保存以进行解析 我正在使用Swift成功地检索PFObject,但在尝试使用incrementKey()函数增加嵌套值时遇到了问题 我第一次尝试: var query = PFQuery(className:"Quests") query.getObjectInBackgroundWithId(questId) { (retrievedQuest: PFObject?, error: NSError?)

我试图检索一个PFObject,在投票计数中添加1,然后重新保存以进行解析

我正在使用Swift成功地检索PFObject,但在尝试使用incrementKey()函数增加嵌套值时遇到了问题

我第一次尝试:

    var query = PFQuery(className:"Quests")
    query.getObjectInBackgroundWithId(questId) {
        (retrievedQuest: PFObject?, error: NSError?) -> Void in
        if error != nil {
            println(error)
        } else {
            if let theQuest = retrievedQuest {
                if let options = theQuest["options"]{
                    println(options[row])
                    options[row].incrementKey("votes", byAmount: 1)
                }
            }
        }
    }
var options = theQuest["options"] as! [PFObject]
我收到以下错误:

-[__NSDictionaryM incrementKey:byAmount:]: unrecognized selector sent to instance 0x7f8acaf97dd0
我下一次尝试:

    var query = PFQuery(className:"Quests")
    query.getObjectInBackgroundWithId(questId) {
        (retrievedQuest: PFObject?, error: NSError?) -> Void in
        if error != nil {
            println(error)
        } else {
            if let theQuest = retrievedQuest {
                if let options = theQuest["options"]{
                    println(options[row])
                    options[row].incrementKey("votes", byAmount: 1)
                }
            }
        }
    }
var options = theQuest["options"] as! [PFObject]
并获得:致命错误:NSArray元素未能与Swift数组元素类型匹配

接下来,我尝试分解PFObject中的元素,尝试手动增加“投票数”

    var query = PFQuery(className:"Quests")
    query.getObjectInBackgroundWithId(questId) {
        (retrievedQuest: PFObject?, error: NSError?) -> Void in
        if error != nil {
            println(error)
        } else {
            if let theQuest = retrievedQuest {
                var options = theQuest["options"] as! NSArray
                var theOption = options[row] as! NSDictionary
                var theVotes = theOption["votes"] as! Int
                theVotes++
                retrievedQuest?.saveInBackground()
很明显,以这种方式增加投票数不会影响retrievedQuest,保存retrievedQuest不会反映投票数的任何更新


关于如何获得理想结果有什么想法吗?

斯威夫特不知道
选项的类型。正如Paulw11所说,您需要转换为正确的类型。如果选项是
PFObject
s的数组(如代码所示),则更改

if let options = theQuest["options"]{ 
  println(options[row])
  options[row].incrementKey("votes", byAmount: 1)
}


可能会解决您的问题。

仅供参考-我通过消除选项数组解决了这个问题,取而代之的是,让每个选项都是类的唯一属性。现在可以使用

theQuest.incrementKey("option\(row)")

什么是选择?一组对象?如果是这样,那么使用类型转换告诉Swift这一点,但您的异常情况是,选项实际上包含一个可变字典,它没有实现incrementKey:ByAmountsDictionary没有
incrementKey
方法。我在原始问题中添加了一组附加信息。谢谢你到目前为止的指导。谢谢rickerbh-我试过这么做,但使用as!导致错误“致命错误:NSArray元素未能匹配Swift数组元素类型”。用作?导致期权评估为零。