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