Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Finding a specific element in an NSArrayController

I've got an NSArrayController that contains a few elements. These elements has got a few attributes like 'name', 'interformation' etc.

What i want is simply to find an element in the NSArrayController which has the name attribute set to, lets say, 'Mads'.

Since efficiency isn't an great issue here i would just do a linear search by iterating over all the elements in the NSArrayController while checking if the 'name' attribute is 'Mads'.

But I can't seem to get an NSIterator from the NSArrayController, so I'm wondering if there's another way to do this?

Any help is appreciated

like image 608
Mads Hartmann Avatar asked Aug 08 '09 11:08

Mads Hartmann


2 Answers

Get the arrangedObjects, which is an array, and either iterate on that or use filteredArrayUsingPredicate:.

That's assuming that it wouldn't be more appropriate to set the filterPredicate of the array controller. If you do go that way, then arrangedObjects will contain only the matching objects.

like image 60
Peter Hosey Avatar answered Dec 01 '22 17:12

Peter Hosey


How about using the content?

ie

// ac is an NSArrayController*
for (MyObject *mob in ac.content) {
    if ([mob.name isEqualToString:@"something"]) {
        // found
        break;
    }
}
like image 20
epatel Avatar answered Dec 01 '22 16:12

epatel