1
我有Pet
實體可以有多個活動:獲取實體NSSet的最後記錄?
public class Pet: NSManagedObject {
@NSManaged var dbName: String
@NSManaged var events: NSSet? // 1-to-many relationship with events
}
public class Event: NSManagedObject {
@NSManaged var key: String
@NSManaged var date: Int64
}
我設置活動基於其日期被編入索引。我做了一個函數,它返回給定寵物的所有事件。
func fetchEventsForPet(pet: String) -> [Event]? {
let request = NSFetchRequest<NSFetchRequestResult>(entityName: Pet.entityName)
let predicate = NSPredicate(format: "dbName == %@", pet)
request.predicate = predicate
request.fetchLimit = 1
do {
let result = try self.fetch(request) as? [Pet]
if let pets = result {
for pet in pets {
if let events = pet.events {
if let evts = events.allObjects as? [Event] {
return evts // Return pets events
}
}
}
}
} catch {}
return nil
}
我將如何修改這個功能只返回最後一個事件(基於date
的最新的事件)?我每次都必須獲取所有事件,還是有更快的方法來完成此操作?
添加排序描述符,以便按降序排列按日期排序。如果提取限制爲1,則只會得到一個對象,即具有最大日期的對象。 – matt
可能重複的http://stackoverflow.com/questions/10398019/core-data-how-to-fetch-an-entity-with-max-value-property – matt
所以,即使我正在抓取一個「Pet」實體我仍然可以通過'Event'添加一個排序描述符? – MarksCode