我使用的是Parse,我有一个名为“PFObjects”的scorecardData数组。每个PFObject都有一个Int类型的“得分”属性。我试图按照“得分”对数组进行排序,但我得到了以下错误:“二进制运算符'<‘不能应用于两个'AnyObject?’操作数”。我不知道我在这里做错了什么。我还试着将objectForKey(“得分”)转换为!但它不让我这么做。有什么建议吗?提前谢谢。
var scorecardData = [PFObject]()
scorecardData.sortInPlace({$0.objectForKey("score") < $1.objectForKey("score")})发布于 2015-11-22 21:09:08
您将scorecardData变量声明为PFObject数组。为什么要尝试使用保留的PFObject属性访问objectForKey:?不管怎样,我不是解析专家。但是,如果将数组声明为[PFObject],则可以使用:
scorecardData.sortInPlace({$0.score < $1.score})但是,除非您将PFObject子类用于更本地的面向对象的类结构,否则这是行不通的。如果您这样做,请记住也要指定:
var scorecardData = [YOUR_NEW_CLASS]()我强烈建议对PFObject进行子类化,以利用所有快速类型安全的优点。
但是,如果要保留数据结构,可以使用:
scorecardData.sortInPlace({($0["score"] as! Int) < ($1["score"] as! Int)})记住,这是危险的,并在未来避免它。
发布于 2017-03-22 09:53:33
如果你想对你的PFOject数组进行排序.你能做到的
extension Array where Element:PFObject {
func sort() -> [PFObject] {
return sort { (first, second) -> Bool in
let firstDate = first.objectForKey("time") as! NSDate//objectForKey(Constants.Parse.Fields.User.fullName) as? String
let secondDate = second.objectForKey("time") as! NSDate//objectForKey(Constants.Parse.Fields.User.fullName) as? String
return firstDate.compare(secondDate) == .OrderedAscending
}
}
}发布于 2015-11-22 21:59:29
你试过这样做吗?
var query = PFQuery(className:"ScoreCard")
// Sorts the results in ascending order by the score field
query.orderByDescending("score")
query.findObjectsInBackgroundWithBlock {https://stackoverflow.com/questions/33859497
复制相似问题