es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Predicado de Swift Core Data

Quiero filtrar Core Data utilizando “NSPredicate” utilizando el valor de la propiedad de relación (cada sublista tiene una lista de origen y cada lista tiene muchas sublistas)

La entidad de la sublista:

@NSManaged public var addedDate: Date?
@NSManaged public var id: UUID?
@NSManaged public var index: Int16
@NSManaged public var title: String?
@NSManaged public var origin_List: ListOfTasks?   // es opcional y necesito filtrar la sublista utilizando su propiedad id
@NSManaged public var tasks: NSSet?

La entidad de la lista:

@NSManaged public var id: UUID? // filtrar la sublista utilizando esta id
@NSManaged public var index: Int16
@NSManaged public var title: String?
@NSManaged public var comments: NSSet?
@NSManaged public var groupSublists: NSSet?
@NSManaged public var origin_Group: ListOfTasks?
@NSManaged public var sublists: NSSet?   // Las sublistas

Entonces necesito asegurarme de que la origin_lista no sea nula y que para origin_lista.id tenga wrappedId, luego buscar si la id es igual a una id específica. En Swift, sería como el siguiente código:

if sublist.origin_List != nil && sublist.origin_List!.wrappedId == someId {
    // obtener todas las sublistas coincidentes
}

Pero no sé cómo pasar eso a “NSPredicate”.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para filtrar la entidad de la sublista utilizando la propiedad origin_List, puedes usar el siguiente NSPredicate:

    let fetchRequest: NSFetchRequest<sublist> = Sublist.fetchRequest()
    fetchRequest.predicate = NSPredicate(format: "origin_List != nil AND origin_List.id == %@", someId.uuidString)
    

    Esto recuperará todas las sublistas cuya origin_List no es nula y cuya propiedad id de origin_List coincide con el someId dado.

    Puedes usar esta solicitud de recuperación para obtener las sublistas requeridas de Core Data.

Comments are closed.