簡體   English   中英

PFObject數組排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM