2

通常、NSString だけの NSArray がある場合は、NSArray のメソッドを使用できます。

- (NSString *)componentsJoinedByString:(NSString *)separator

文字列を取得します ("John,David,Peter" など)。ただし、コア データ エンティティ オブジェクトの NSArray があり、その中に 1 つの属性 (たとえば、各エンティティ オブジェクトの「名前」属性のみ) を取得するだけでよい場合、これを行う最も簡単な方法は何ですか?

Core Data エンティティ オブジェクトには多くの属性 (名前、電話番号、生年月日) を含めることができますが、"John,David,Peter" のような文字列だけが必要です。

4

5 に答える 5

3

以下は、オブジェクトのnameプロパティのみを取得します。Person

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Person"];
request.propertiesToFetch = @[@"name"];
request.resultType = NSDictionaryResultType;
NSArray *array = [managedObjectContext executeFetchRequest:request error:nil];
NSString *names = [[array valueForKey:@"name"] componentsJoinedByString:@","];
NSLog(@"%@", names);

resultTypeをに設定する必要があります。NSDictionaryResultTypeそうしないと無視されpropertiesToFetchます。フェッチの結果は辞書の配列です。valueForKeyandを使用するとcomponentsJoinedByString、すべての名前から単一の文字列が作成されます。

于 2012-10-20T21:31:03.307 に答える
0

NSArray *objectsそれぞれに属性を持つコアデータオブジェクトがある場合はname、次を使用できます。

NSArray *names = [objects valueForKey:@"name"];

すべての名前を含む新しい配列を取得し、それを連結することができます

NSString *allNames = [names componentsJoinedByString:@","];
于 2012-10-20T21:11:30.637 に答える
0
// Assuming you have the list of entities - NSArray *entityObjects 
NSMutableString *nameAttributes = [[NSMutableString alloc] init];
for(int i = 0; i < [entityObjects count]-1; i++){
    [nameAttributes appendString:[NSString stringWithFormat:@"%@, ", [entityObjects objectAtIndex:i].name]];
}
    [nameAttributes appendString:[NSString stringWithFormat:@"%@", [entityObjects lastObject].name]];
于 2012-10-20T21:09:25.057 に答える
0

あなたの最良の選択肢は、配列内の項目を反復処理し、それぞれにappendString:. descriptionエンティティオブジェクトにメソッドを追加してから、あなたが言及したメソッドを使用できますがdescription、他の目的に使用され、おそらく競合を引き起こす可能性があります.

于 2012-10-20T21:01:41.970 に答える
0

あなたは単にそのようにすることができます、

NSString *toCollectString =@"";

for(int k =0;k<self.arrayHoldingObjects.count;k++)
{
   ModelName *model = [self.arrayHoldingObjects objectAtIndex:k];  
   NSString *str = model.name;
   toCollectString = [toCollectString stringByAppendingString:str];  
}

で名前を取得しますtoCollectString

于 2012-10-20T22:19:46.343 に答える