Mam podmiot w moim "ProjName.xcdatamodel
" z nazwą "Pytania". W tym podmiocie mam 5 atrybutów ("icehockey", "siatkówka", "piłka nożna", ...), każdy z typem transformable
. Każdy wiersz (atrybut) zostanie wypełniony ramką NSMutableArray. Co chcę zrobić, to uzyskać wartość określonego atrybutu w tym obiekcie. To jest mój kod:Swift pobiera określony obiekt NSManagedObject z obiektu (dane podstawowe)
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
}
}
Będzie to oczywiście nie działa odkąd wyjąć pierwszy indeks wyników z bazy danych (results[0] as NSManagedObject
), a więc będzie się zawiesić, jeśli ten element nie jest taka sama jak valueForKey I” m szukasz.
Jak uzyskać pojedynczy wiersz wyników, którego szukam? To znaczy. "piłka nożna", a przynajmniej czy mogę w jakiś sposób przejrzeć wyniki i porównać klucze każdego wiersza wyników, aby nie uległy awarii, gdy próbuję użyć niewłaściwego klucza? Jak coś takiego:
for (res) in results as NSManagedObject {
if(res.key == "soccer") {
qArr = res.valueForKey("soccer") as NSMutableArray
return qArr
}
}
Mam nadzieję, że w wyjaśnieniu jestem czysty!
Pomoc byłaby naprawdę doceniana. Szukałem w Internecie źle, nie miałem szczęścia! – user2099024
Myślę, że musisz dodać NSPredicate do swojego "żądania". Następnie możesz przefiltrować dane, które chcesz odesłać z encji. Spójrz na ten link na przykład: http://nshipster.com/nspredicate/ –
@KevinHorgan Spróbuje, gdy w domu! – user2099024