2013-08-19 2 views
0

Я пытаюсь получить все элементы, которые пользователь сохранил внутри приложения (это может быть легко), получить один атрибут из каждой записи и эти атрибуты перечислены внутри строки (вот в чем проблема). Как мне это сделать? Я что-то написал, но я не думаю, что это правильный путь. Помоги мне, пожалуйста!Получите все записи из основных данных и получите строку с одним атрибутом из каждой записи (MagicalRecord)

-(NSString*)getAllRecords 
{ 
    NSArray* arra = [NewItem MR_findAllSortedBy:@"data" ascending:YES]; 
    NewItem* ctn = arra.;// I have not any idea 

    return [NSString stringWithFormat:@"%@", [arra componentsJoinedByString:@", "]]; 

} 

ответ

1

Если я правильно понимаю вашу проблему правильно, то это должно делать то, что вы хотите:

NSArray *elements = [NewItem MR_findAllSortedBy:@"data" ascending:YES]; 
NSArray *attributes = [elements valueForKey:@"attributeName"]; 
return [NSString stringWithFormat:@"%@", [attributes componentsJoinedByString:@", "]]; 

Применение valueForKey:key в массив возвращает массив, содержащий результаты вызова valueForKey:key на каждом из объектов массива.

2

Чуть больше кода, но:

NSFetchRequest *request = [NewItem MR_requestAllSortedBy:@"data" ascending:YES]; 
[request setResultType:NSDictionaryResultType]; 
[request setPropertiesToFetch:@[@"attributeName"]; 
NSArray *results = [NewItem MR_exceuteRequest:request]; 

NSArray *listOfValuesOfAttributeName = [results valueForKeyPath:@"@unionOfObjects.attributeName"]; 

В конце этого listOfValuesOfAttributeName будет в основном один массив значений вы после этого. Это похоже на следующий sql "select attributeName from NewItem".

Последний звонок valueForKeyPath: необходим, потому что результаты возвраты - это список словарей. То, что вы хотите, это список значений. Оператор keypath @unionOfObjects очищает это для вас.

Смежные вопросы