尝试使用swift基于对象的公共键来分割对象数组

时间:2014-10-04 12:28:21

标签: ios arrays dictionary swift

我完全迷失了。我试图基于公共密钥拆分对象数组(使用Parse SDK检索)。 基本上我想制作一个COUNT + GROUP BY,但我找不到用Parse SDK制作GROUP BY的方法,所以我试图对这些对象进行分组并按代码计算它们。 但首先,我写的内容看起来很糟糕,其次,甚至没有编译,我无法理解为什么。

这是我正在使用的代码

var groupedEntries = [String: [String: AnyObject?]]()

...

let query = PFQuery(className: "Entry")
query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]!, error: NSError!) -> Void in
   if error == nil {

      var groupingKey: String
      for object in objects {

         groupingKey = object[groupingKey] as String
         if self.groupedEntries[groupingKey] != nil {
            self.groupedEntries[groupingKey]["count"] = self.groupedEntries[groupingKey]["count"] + 1
         } else {
            self.groupedEntries[groupingKey]["count"] = 1
         }
      }
      self.tableView.reloadData()
   }
}

编译器出现以下错误:'String'不能转换为'DictionaryIndex'。无论我尝试什么,我都会得到与选项或包装相关的错误。

感谢任何能帮助我的人:)

1 个答案:

答案 0 :(得分:1)

使用subscriptDictionary返回给定值类型的可选项,因此您需要打开它。您需要使用我使用的额外变量somevar。请参阅下面的代码

var groupedEntries = [String: [String: AnyObject?]]()

@IBAction func changeImage(sender: AnyObject){
    var objects:[AnyObject]!
    var groupingKey: String //= "abc" Intialize before using
    //var countryCode: String   //= "abc" not defined in your code

    for object in objects {

        groupingKey = object[groupingKey] as String
        if self.groupedEntries[groupingKey] != nil {
            var somevar = self.groupedEntries[groupingKey]!
            somevar["count"] = (somevar["count"]! as Int) + 1
        } else {
            self.groupedEntries[groupingKey] = ["count":1]
        }
    }
}

我不知道你的逻辑,但这段代码汇编得很好。