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

iOS Parse OrderByAscending result wrong for Turkish Character

当我使用 "orderByAscending" 从 Parse 获取数据时,土耳其字符 (ç,ö,ü,vs) 和大写字符的结果 return 错误。

所有土耳其语字符排在结果末尾。 结果示例:

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

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

大写字符示例:

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

预期结果。这是真的----返回,BBC,Bistro

我的代码如下:

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()


            })


        }



    }

}

我该如何处理这种情况?

谢谢。

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

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 = [=10=]["Name"] as! String
             let nameB = ["Name"] as! String

             return nameA < nameB
       }

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

请注意,我提供的代码将顺序传递给标准 Swift 字符串比较运算符(“<”)。您也可以使用其他方法手动对查询结果进行排序 as shown in this question.