2016-08-27 3 views
0

Когда я получаю данные с помощью «orderByAscending» из Parse, результат возвращается неверно для турецких символов (ç, ö, ü, vs) и верхних символов.iOS Parse OrderByПроверка результата неверна для турецкого персонажа

Весь турецкий характер заказан в конце результата. Пример:

Текущий результат. Это неправильно ---- Али, Кейда, Мехмет, Зейнеп, Чан, Омер

Ожидаемый результат. Это верно ---- Али, Ceyda, САп Mehmet, Омер, Зейнеп

прописными буквами Пример:

Текущий результат. Это неправильно ---- BBC, Назад, Бистро

Ожидаемый результат. Это верно ---- Спина, 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

Вы можете вручную отсортировать массив объектов, возвращенный (потенциально некорректным) внутренний сервер:

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 («<») , Вы также можете вручную отсортировать результаты запроса, используя другие методы: as shown in this question.

+0

спасибо. Проблема турецкого символа исправлена, но проблема с верхним символом продолжается. –

+0

Если символы верхнего регистра испортили ваш вид, используйте свойство string. .lowercased' для сравнения строчных версий каждой строки. – cpimhoff

 Смежные вопросы

  • Нет связанных вопросов^_^