У меня есть массив NSMutableDictionary сохраняется с NSUserDefault, я хочу, чтобы отсортировать массив, основанный на ключе «метки времени» (значение является String) в каждом NSMutableDictionary: , что код я использую, чтобы получить массив:Как отсортировать массив хранилища NSMutableDictionary в NSUserDefault?
if let chatsArray = NSUserDefaults().arrayForKey("myChatsList") as? [NSMutableDictionary]{
print(chatsArray)
//sort the array
print(sortedArray)
}
вот как мой массив выглядит следующим образом:
[{
eventBadge = 1;
eventId = "-KWE39B6Dh7rDzaF-xy4";
lastMessage = uyfgduihgvifudhviufhvdf;
timestamp = 20;
unreadMessage = 2;
}, {
eventBadge = 1;
eventId = "-KWWc99ex8f7ksq8TR2U";
lastMessage = uyfgduihgvifudhviufhvdf;
timestamp = 5;
unreadMessage = 1;
}, {
eventBadge = 1;
eventId = "-KWE5OYRZnZ5-p3LUotL";
lastMessage = uyfgduihgvifudhviufhvdf;
timestamp = 10;
unreadMessage = 2;
}]
Я пытаюсь использовать NSSDescriptor:
var descriptor: NSSortDescriptor = NSSortDescriptor(key: "timestamp", ascending: true)
chatsArray.sortedArrayUsingDescriptors([descriptor])
, а также использовать типизированный массив (после того, как с помощью нового класса)
mutableChatsArray.sortInPlace{ ($0.compare($1.timestamp) == NSComparisonResult.OrderedDescending)}
До сих пор без успеха ... Спасибо за вашу помощь
Почему бы вам не использовать массивы Swift и словари? Это проще и безопаснее и сохраняет информацию о типе. – Moritz
Что вы подразумеваете под быстрыми массивами и словарями (я относительно новый в Swift, и я думал, что NSMutableArray/Dictionary также связаны с быстрым ...) Если у вас есть какие-либо предложения, я рад это услышать .. – jerem
Прочтите руководство Swift, это объясняется. У Swift есть массивы и словари, нет необходимости использовать NSArray и NSDictionary, которые исходят из Foundation (они могут использоваться в Swift, но они не Swift). NSArray и NSDictionary были необходимы в Objective-C, потому что выбора не было, C-массивы ужасные - это не так с Swift. – Moritz