【问题标题】:Get all records from core data and get string with one attribute from every record (MagicalRecord)从核心数据中获取所有记录并从每条记录中获取具有一个属性的字符串(MagicalRecord)
【发布时间】:2013-08-19 19:08:38
【问题描述】:
我试图获取用户在应用程序中保存的所有元素(这可能很容易),从每条记录中获取一个属性并将这些属性列在一个字符串中(这就是问题所在)。我该怎么做?
我写了一些东西,但我认为这不是正确的方法。请帮帮我!
-(NSString*)getAllRecords
{
NSArray* arra = [NewItem MR_findAllSortedBy:@"data" ascending:YES];
NewItem* ctn = arra.;// I have not any idea
return [NSString stringWithFormat:@"%@", [arra componentsJoinedByString:@", "]];
}
【问题讨论】:
标签:
ios
core-data
magicalrecord
【解决方案1】:
代码有点多,但是:
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: 调用,因为返回的结果是一个字典列表。你想要的是一个值列表。 @unionOfObjects keypath 运算符会为您清理这些内容。
【解决方案2】:
如果我正确理解您的问题,这应该可以满足您的要求:
NSArray *elements = [NewItem MR_findAllSortedBy:@"data" ascending:YES];
NSArray *attributes = [elements valueForKey:@"attributeName"];
return [NSString stringWithFormat:@"%@", [attributes componentsJoinedByString:@", "]];
将valueForKey:key 应用于数组会返回一个数组,其中包含对数组的每个对象调用valueForKey:key 的结果。