iOS Parse OrderByAscending 结果错误的土耳其字符
Posted
技术标签:
【中文标题】iOS Parse OrderByAscending 结果错误的土耳其字符【英文标题】:iOS Parse OrderByAscending result wrong for Turkish Character 【发布时间】:2016-08-27 19:53:01 【问题描述】:当我从 Parse 中使用“orderByAscending”获取数据时,土耳其字符(ç、ö、ü、vs)和大写字符的结果返回错误。
在结果末尾排序的所有土耳其字符。 结果示例:
当前结果。这是错误的 ---- Ali,Ceyda,Mehmet,Zeynep,Çan,Ömer
预期结果。这是真的 ---- Ali,Ceyda,Çan,Mehmet,Ömer,Zeynep
大写字符示例:
当前结果。这是错误的 ---- BBC,Back,Bistro
预期结果。这是真的 ---- Back,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()
)
我该如何处理这种情况?
谢谢。
【问题讨论】:
【参考方案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 字符串比较运算符 ('as shown in this question手动对查询结果进行排序。
【讨论】:
谢谢。土耳其语字符问题已修复,但大写字符问题仍在继续。 如果大写字符搞砸了您的排序,请使用字符串.lowercased
属性来比较每个字符串的小写版本。以上是关于iOS Parse OrderByAscending 结果错误的土耳其字符的主要内容,如果未能解决你的问题,请参考以下文章
如何为经典的帖子和评论模型构建 Parse 数据模型? (使用 iOS、Swift、Parse)
iOS:使用 Parse 获取 Facebook 的用户数据