arraysswiftparse-platformpfobject

PFObject Array Sort


I'm using Parse and I have an array of PFObjects called "scorecardData". Each PFObject has a "score" property that is of type Int. I'm trying to sort my array by "score" but I'm getting the following error: "Binary operator '<' cannot be applied to two 'AnyObject?' operands". I'm not sure what I'm doing wrong here. I also tried down casting the objectForKey("score") as! Int but its not letting me do this. Any suggestions? Thanks in advance.

    var scorecardData = [PFObject]()

    scorecardData.sortInPlace({$0.objectForKey("score") < $1.objectForKey("score")})

Solution

  • You declared scorecardData variable as Array of PFObject. Why are you trying access PFObject property using objectForKey: reserved? Anyway I am not parse expert. But if you declared your array as [PFObject] you can use:

    scorecardData.sortInPlace({$0.score < $1.score})
    

    But this won't work unless you subclass PFObject for a more native object-oriented class structure. If you do that remember also to specify:

    var scorecardData = [YOUR_NEW_CLASS]()
    

    I strongly recommend subclassing PFObject to make use of all swift type-safe goodies.

    But if you want to keep your data structure you can use:

    scorecardData.sortInPlace({($0["score"] as! Int) < ($1["score"] as! Int)})
    

    Keep in mind that it's dangerous, and in future avoid it.