iOS Parse OrderByAscending结果错误的土耳其字符

时间:2016-08-27 19:53:02

标签: ios swift parse-platform pfquery

当我从Parse获取带有“orderByAscending”的数据时,土耳其字符(ç,ö,ü,vs)和上部字符的结果返回错误。

在结果的最后命令所有土耳其字符。 结果示例:

当前结果。这是错的---- Ali,Ceyda,Mehmet,Zeynep,Çan,Ömer

预期结果。这是真的---- Ali,Ceyda,Çan,Mehmet,Ömer,Zeynep

上方字符示例:

当前结果。这是错的---- BBC,Back,Bistro

预期结果。这是真的----返回,BBC,小酒馆

我的代码如下:

func getData(){



    let Query = PFQuery(className: "Table")
    Query.limit = 1000
    Query.orderByAscending("Name")

    Query.findObjectsInBackgroundWithBlock { (objects, error) in


        if error != nil {

            print(error)



        }else{


            for object in objects! {



                let name = object["Name"] as! String
                let link = object["Link"] as! String
                let logo = object["Logo"] as! PFFile
                let isPremium = object["isPremium"] as! Int
                let objectID = object.objectId




                let LogoUrl = logo.url



                Model.sharedInstance.items.addItem(name, link: link, logo: LogoUrl!, isPremium: isPremium,objectID:objectID!)


            }



            NSOperationQueue.mainQueue().addOperationWithBlock({

                self.tableView.reloadData()


            })


        }



    }

}

我该如何处理这种情况?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以手动对(可能存在缺陷的)服务器后端返回的对象数组进行排序:

Query.findObjectsInBackgroundWithBlock { (objects, error) in

    if error != nil {
        print(error)
    } else {

        // sort the objects by hand
        let sortedObjects = objects!.sort {         // in Swift 3, use "sorted" instead
             let nameA = $0["Name"] as! String
             let nameB = $1["Name"] as! String

             return nameA < nameB
       }

        for object in sortedObjects {
               // do your work with the ordered objects
        }
        NSOperationQueue.mainQueue().addOperationWithBlock({
            self.tableView.reloadData()
        })
    }
}

请注意,我提供的代码将排序传递给标准的Swift String比较运算符('&lt;')。您还可以使用其他方法as shown in this question手动对查询结果进行排序。