当我从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()
})
}
}
}
我该如何处理这种情况?
感谢。
答案 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手动对查询结果进行排序。