Ho un'entità nel mio "ProjName.xcdatamodel
" con il nome "Domande". In questa entità ho 5 attributi ("icehockey", "pallavolo", "calcio", ...), ciascuno con il tipo transformable
. Ogni riga (attributo) sarà riempita con un NSMutableArray. Quello che voglio fare è ottenere il valore di un attributo specifico in questa entità. Questo è il mio codice:Swift ottiene specifici NSManagedObject dall'entità (dati di base)
func readQuestionsFromCore(sport:NSString) -> NSMutableArray {
var appDel:AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
var context:NSManagedObjectContext = appDel.managedObjectContext!
var request = NSFetchRequest(entityName: "Questions")
request.returnsObjectsAsFaults = false
var results: NSArray = context.executeFetchRequest(request, error: nil)!
var qArr:NSMutableArray!
if results.count > 0 {
var res = results[0] as NSManagedObject
qArr = res.valueForKey("\(sport)") as NSMutableArray
return qArr
} else {
qArr = []
return qArr
}
}
Questo non naturalmente funzionerà da quando prendo il primo indice dei risultati dal database (results[0] as NSManagedObject
) e quindi andrà in crash se questo elemento non è la stessa come il valueForKey I' sto cercando.
Come ottengo la riga di un risultato che sto cercando? Cioè "soccer", o almeno posso in qualche modo scorrere i risultati e confrontare le chiavi di ogni riga del risultato in modo che non si arresti quando provo con la chiave sbagliata? Tipo qualcosa:
for (res) in results as NSManagedObject {
if(res.key == "soccer") {
qArr = res.valueForKey("soccer") as NSMutableArray
return qArr
}
}
Spero di essere chiaro nella mia spiegazione!
L'aiuto sarebbe molto apprezzato. Ho cercato su internet male non ha avuto fortuna! – user2099024
Penso che sia necessario aggiungere un NSPredicate alla "richiesta". È quindi possibile filtrare i dati che si desidera ricevere dall'entità. Dai un'occhiata a questo link per esempio: http://nshipster.com/nspredicate/ –
@KevinHorgan Proverà quando a casa! – user2099024