我試圖按照the accepted answer to this question中列出的排列數組,但我遇到了Isuru在該評論中提到的問題回答。也就是說,它應該由實體的「日期」的屬性數組排序的代碼帶來的編譯器抱怨「找不到成員‘日期’」我如何排序一個包含NSManagedObject子類的實例的swift數組的一個屬性值(日期)
這裏是NSManagedObject子類描述實體:
import Foundation
import CoreData
@objc(Entry)
class Entry: NSManagedObject {
@NSManaged var date: NSDate
@NSManaged var reflections: AnyObject
@NSManaged var contactComment: NSSet
@NSManaged var person: NSSet
override func awakeFromInsert() {
let now:NSDate = NSDate()
self.date = now;
}
}
而且這裏是它試圖對數組進行排序的代碼:
lazy var entries:[Entry] = {
var days:[Entry] = self.managedObjectContext!.requestEntity("Entry")as [Entry]
days.sort({$0.date < $1.date})
var today:Entry = days.last!
println(today.date)
return days
}()
注意,在該代碼的後半部分,我能夠針對這些項目的一個訪問,並記錄「日期」的屬性,並且編譯器沒有按它沒有問題。
是我的排序正確的語法?這段代碼還有其他問題,我沒有看到?
這適用於較小的數據量,但如果數量較大,需要一段時間才能加載。有沒有更有效的方法? – nsij22 2015-06-03 14:28:14
@ nsij22因爲我們在這裏說'NSManagedObject's,那麼這些對象可能來自核心數據存儲。在這種情況下,最有效的做法可能是通過核心數據提取請求對數據進行排序。看看'NSFetchRequest.sortDescriptors':https://developer.apple.com/library/mac/documentation/Cocoa/Reference/CoreDataFramework/Classes/NSFetchRequest_Class/index.html#//apple_ref/occ/instp/NSFetchRequest/ sortDescriptors – 2015-06-04 00:10:47