根据对象的属性获取NSMutableArray索引?

Jen*_*all 2 objective-c nsmutablearray

我目前正试图NSMutableArray根据它的一个对象的属性来获取我的索引.

我有一个像这样的xml结构:

<timeperiod>
    <Day>
        <Date>20120325</Date>
    </Day>
    <Day>
        <Date>20120326</Date>
    </Day>
</timeperiod>
Run Code Online (Sandbox Code Playgroud)

现在,假设xml结构包含一个月中的每一天.

Day和它的所有属性都被添加到了NSMutableArray.

我想要的是:根据日期获取数组的索引.

我在伪代码中想象这样的东西:

-(NSInteger)getIndexFromObjectProperty:(NSString *)property{

   // Givf index from array where date is for example 20120310

   //pseudo
   Return [myClassObject.ObjectArray indexFromProperty:property];


}
Run Code Online (Sandbox Code Playgroud)

我发现了这一点:按对象的属性对NSMutableArray进行排序

这将从属性中排序,但如何从属性0_0获取索引

我还发现了这个:从具有某些提供属性值的对象数组中获取索引的函数 如果语法工作开箱即可帮助很多:(

任何提示和/或指示将受到高度赞赏.

提前致谢.

编辑我正在尝试给出的答案.将获得更新.

编辑2:办公室正在把我扔掉,因为他们把建筑物锁定了......明天我会回复你的...

Jen*_*all 6

这真的没有我想象的那么难......

通过以下方式解决......

-(NSInteger)returnIndexFromDateProperty:(NSString *)property{


    NSInteger iIndex;

    for (int i = 0; i < [myArray count]; i++){

        if([property isEqualToString:[[myArray objectAtIndex:i]dateProperty]]){

            iIndex = i;
        }
    }    


    return iIndex;

}
Run Code Online (Sandbox Code Playgroud)

感谢所有其他答案.他们在思考过程中(很糟糕)纠正了很多.


das*_*ght 5

您可以使用indexOfObjectPassingTest:方法来测试每个对象,并返回一个块BOOL.

-(NSInteger)getIndexFromObjectProperty:(NSString *)property{
    return [myArray indexOfObjectPassingTest:
        ^(id obj, NSUInteger idx, BOOL *stop) {
            // Return true if obj has the date that you are looking for.
            BOOL res;
            if ([property isEqualTo:[obj dateProperty]]) {
                res = YES;
                *stop = YES;
            } else {
                res = NO;
            }
            return res;
        }];
 }
Run Code Online (Sandbox Code Playgroud)