2013-01-05 11 views
11

Cel: Chciałbym pobrać wartość jednego atrybutu (z jednostki) z bazy danych (dane podstawowe) do tablicy.coredata - pobierz jeden atrybut do tablicy

Przykład

Entity name = Pracownicy

Atrybut = IDpracownika

Chcę tylko wszystkie employeeIDs zaludnionych do tablicy/Set.

Pytanie

Poniżej jest mój wdrażania, po prostu czuję, że to rodzaj rundzie o sposób, chciałbym wiedzieć, czy istnieje lepszy sposób to zrobić.

Kod

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Employees"]; 

fetchRequest.resultType = NSDictionaryResultType; 

[fetchRequest setPropertiesToFetch:[NSArray arrayWithObjects:@"employeeID", nil]]; 

NSError *error  = nil; 
NSArray *results = [self.managedObjectContext executeFetchRequest:fetchRequest 
                   error:&error]; 

NSMutableArray *employeeIDs = [NSMutableArray array]; 

for(id currentRecord in results) 
{ 
    [employeeIDs addObject:[currentRecord objectForKey:@"employeeID"]]; 
} 
+0

Skorzystaj z opcji Pobierz jako słowniki do pobrania i podaj "employeeID" jako klucz do pobrania. Sprawdź NSFetchRequest.h. – nielsbot

Odpowiedz

23

Można uniknąć ostatniej pętli,

Zamiast,

NSMutableArray *employeeIDs = [NSMutableArray array]; 

for(id currentRecord in results) 
{ 
    [employeeIDs addObject:[currentRecord objectForKey:@"employeeID"]]; 
} 

Spróbuj tego,

NSMutableArray *employeeIDs = [results valueForKey:@"employeeID"]; 
+0

wielkie dzięki! łamałem sobie głowę. – user1046037

+8

Po prostu kieruje do kogoś innego: valueForKey zwraca NSArray. Jeśli naprawdę chcesz, aby była zmienna, wywołaj mutableCopy na wynikach. NSMutableArray * employeeIDs = [[results valueForKey: @ "employeeID"] mutableCopy]; – Mattio

+1

Doskonały komentarz, Mattio! –

16

Jednym ze sposobów na wykonanie tej czynności jest:

+0

Dzięki ... Pomogło mi to .. – Shivaay

+2

Możesz ograniczyć atrybuty zwracane do potrzeb, używając [request setPropertiesToFetch: @ [@ "<# Attribute name #>"]]; Zobacz https://developer.apple.com/library/ios/documentation/DataManagement/Conceptual/CoreDataSnippets/Articles/fetchExpressions.html – MacMark

Powiązane problemy