我完全迷失了。我试图基于公共密钥拆分对象数组(使用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'。无论我尝试什么,我都会得到与选项或包装相关的错误。
感谢任何能帮助我的人:)
答案 0 :(得分:1)
使用subscript
时Dictionary
返回给定值类型的可选项,因此您需要打开它。您需要使用我使用的额外变量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]
}
}
}
我不知道你的逻辑,但这段代码汇编得很好。