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)

Phonegap + iOS + Parse 推送通知

Parse.com 在 iOS 7.0 上的基本项目崩溃

iOS:使用 Parse 获取 Facebook 的用户数据

如何在 Parse iOS SDK 的 Parse Calls 中添加标头?

Parse-server:iOS 推送通知