¿Cuál es la mejor manera de realizar una solicitud de recuperación en CoreData?

Resuelto fisher asked hace 9 años • 1 respuestas

Estoy tratando de encontrar la forma más eficiente de realizar una solicitud de recuperación en CoreData. Anteriormente, primero verifiqué si existía un error y, si no era así, verifiqué la matriz de la entidad devuelta. ¿Existe una manera más rápida de hacer esto? ¿Es algo como esto una forma aceptada de realizar la solicitud?

let personsRequest = NSFetchRequest(entityName: "Person")

var fetchError : NSError?

//Is it okay to do the fetch request like this? What is more efficient?
if let personResult = managedObjectContext.executeFetchRequest(personRequest, error: &fetchError) as? [Person] {

    println("Persons found: \(personResult.count)")

}
else {

    println("Request returned no persons.")

    if let error = fetchError {

        println("Reason: \(error.localizedDescription)")

    }
}

Saludos amables, pescador

fisher avatar Apr 13 '15 16:04 fisher
Aceptado

Verificar el valor de retorno de executeFetchRequest()primero es correcto. El valor de retorno es nilsi la recuperación falló, en ese caso se establecerá la variable de error , por lo que no es necesario verificar if let error = fetchError.

Tenga en cuenta que la solicitud no falla si no existe ningún objeto (que coincida). En ese caso se devuelve una matriz vacía.

let personRequest = NSFetchRequest(entityName: "Person")
var fetchError : NSError?
if let personResult = managedObjectContext.executeFetchRequest(personRequest, error: &fetchError) as? [Person] {
    if personResult.count == 0 {
        println("No person found")
    } else {
        println("Persons found: \(personResult.count)")
    }
} else {
    println("fetch failed: \(fetchError!.localizedDescription)")
}
Martin R avatar Apr 13 '2015 09:04 Martin R