2016-03-16 1 views
0

Я хочу загрузить последние 30 записей (сообщения в этом случае) из Parse в моем UITableView, заказав их по «созданной» дате. Я могу это сделать, однако сообщения сортируются до 30-й записи, следующие записи не отображаются в моем UITableView.Показать последние 30 записей с убывающим порядком в Parse

Вот мой код:

let messagesQuery = PFQuery(className: "Message") 
messagesQuery.includeKey("conversation") 
messagesQuery.includeKey("author") 
messagesQuery.whereKey("conversation", equalTo: conversation) 
messagesQuery.orderByAscending("createdAt") 
messagesQuery.limit = 30 
messagesQuery.findObjectsInBackgroundWithBlock { (results, error) -> Void in 
} 

Я знаю, что я мог бы использовать вместо orderByDescending("createdAt") ... Тем не менее, если я это сделаю, то порядок моих сообщений восстанавливается. Я имею в виду, что я получаю последние 30 сообщений, но порядок отменен (самое раннее сообщение появляется в нижней части разговора, а самое последнее - вверху).

Итак, как я могу исправить это, чтобы отображать последние 30 сообщений с последними в нижней части моего разговора?

Спасибо!

ответ

0

Try orderByAscending («createdAt»)

Это также звучит, как вы хотите, чтобы нагрузка больше кнопки, как в прокрутке вниз к нижней части первой 30 Сообщения. Когда пользователь добирается до нижней части, вы можете либо нажимать больше кнопки, либо автоматически загружать ее.

0

Вы можете попробовать их сортировки в результирующем блоке, как это:

let messagesQuery = PFQuery(className: "Messages") 
    messagesQuery.includeKey("conversation") 
    messagesQuery.includeKey("author") 
    messagesQuery.whereKey("conversation", equalTo: conversation) 
    messagesQuery.orderByDescending("createdAt") 
    messagesQuery.limit = 30 
    messagesQuery.findObjectsInBackgroundWithBlock { (results, error) -> Void in 
     if var messages: Array<PFObject> = results { 
      for message in messages { 
       print(message.createdAt!) 
      } 
      messages.sortInPlace({ $0.createdAt!.compare($1.createdAt!) == NSComparisonResult.OrderedAscending }) 
      print("") 
      for message in messages { 
       print(message.createdAt!) 
      } 
     } 
    } 
Смежные вопросы