Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
370 views
in Technique[技术] by (71.8m points)

objective c - Get array of property value of each object in another array without a for loop

This might be a basic question, but I can't seem to find an answer.

Suppose I have an NSArray (carArray) with objects of a certain type (Car).

Is it possible to get an NSArray (colorArray) with all values of a property (color) of these objects without iterating carArray with a for loop? (cfr. LINQ in .NET)

NSMutableArray *colorList = [[NSMutableArray alloc] initWithCapacity:0];

for (Car *car in carArray)
{
    [colorList addObject:car.color];
}

Thanks in advance.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Yes. Assuming that your object is adopting the KVC/KVO protocol. You can get an array of the properties like:

NSArray *colorList = [carArray valueForKey:@"color"];

Actually, what valueForKey: method does, is to return an array containing the results of invoking valueForKey: using key on each of the array's objects. (From Apple's Documentation on NSArray)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...