我正在尝试按照这个问题的被接受的回答中所描述的方法对数组进行排序,但是遇到了Isuru在该答案的评论中提到的问题。即,应该通过实体的"date"属性对数组进行排序的代码会导致编译器抱怨"could not find member 'date'"。
以下是描述实体的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
}()
请注意,代码的后半部分中,我能够访问并记录一个条目的“日期”属性,并且编译器没有问题。我的排序语法是否正确?这段代码还有其他问题吗?
NSManagedObject
,那么这些对象可能来自核心数据存储。在这种情况下,最有效的做法可能是通过核心数据获取请求对数据进行排序。请查看NSFetchRequest.sortDescriptors
: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/CoreDataFramework/Classes/NSFetchRequest_Class/index.html#//apple_ref/occ/instp/NSFetchRequest/sortDescriptors - Mike S