[英]PFObject Array Sort
我正在使用Parse,並且有一個稱為“ scorecardData”的PFObjects數組。 每個PFObject都有一個Int類型的“ score”屬性。 我正在嘗試按“分數”對數組進行排序,但出現以下錯誤:“二進制運算符“ <”不能應用於兩個“ AnyObject?” 操作數”。 我不確定我在做什么錯。 我還嘗試將objectForKey(“ score”)強制轉換為! 詮釋,但它不允許我這樣做。 有什么建議么? 提前致謝。
var scorecardData = [PFObject]()
scorecardData.sortInPlace({$0.objectForKey("score") < $1.objectForKey("score")})
您將scorecardData
變量聲明為PFObject
數組。 為什么要嘗試使用objectForKey:
保留訪問PFObject
屬性? 無論如何,我不是解析專家。 但是,如果您將數組聲明為[PFObject]
,則可以使用:
scorecardData.sortInPlace({$0.score < $1.score})
除非您將PFObject子類化為更本地的面向對象的類結構,否則這將無法工作。 如果這樣做,還請指定:
var scorecardData = [YOUR_NEW_CLASS]()
我強烈建議將PFObject子類化以利用所有快速的類型安全的東西。
但是,如果要保留數據結構,可以使用:
scorecardData.sortInPlace({($0["score"] as! Int) < ($1["score"] as! Int)})
請記住,這很危險,以后請避免使用。
如果要對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
}
}
}
您是否嘗試過這樣做?
var query = PFQuery(className:"ScoreCard")
// Sorts the results in ascending order by the score field
query.orderByDescending("score")
query.findObjectsInBackgroundWithBlock {
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.