2012-03-27 10 views
1

私は現在、オブジェクトのプロパティに応じて自分のNSMutableArrayのインデックスを取得しようとしています。オブジェクトのプロパティに応じてNSMutableArrayインデックスを取得しますか?

私はこのようなXMLの構造を持っている:

<timeperiod> 
    <Day> 
     <Date>20120325</Date> 
    </Day> 
    <Day> 
     <Date>20120326</Date> 
    </Day> 
</timeperiod> 

、XML構造が月に毎日含まれていることを想像してください。

日とそのすべてのプロパティがNSMutableArrayに追加されています。

そして、私が望むのは、配列のインデックスを日付に応じて取得することです。

私は擬似コードでこのようなものを想像しています:Sorting NSMutableArray By Object's Property

これは、プロパティからインデックスを取得する方法の特性からソートしますが、0_0

:私はこれを見つけた

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

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

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


} 

私もこれを見つけました:Function to get index from an array of objects having certain value of provided property 構文が完全に機能するなら、多くの助けになるでしょう:(

ヒントや指針を高く評価します。

ありがとうございます。

EDIT私は現在、答えを試しています。アップデートで戻ってきます。

EDIT2:彼らがダウンして建物をロックしているため、Officeが私を投げている...私は明日あなたに戻って取得します。..

答えて

5

でこれを行うことができます。..

...他のすべての答えを

-(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; 

} 

感謝を次のようにして解決

。彼らは思考のプロセスの間にたくさんのものを癒しました(悪くない)。

4

あなたはで各オブジェクトをテストするために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; 
     }]; 
} 
0

XMLデータを入れた後に配列がどのような構造になっているかははっきりしていません。それは配列の配列ですか?辞書の配列?一般に、配列からオブジェクトを取得するには、indexOfObject:またはそのバリエーションの1つを使用します。

あなたは私はあなたの日付の形式があるかどうかはわかりませんが、私はそれはNSStringのだ理解されるように、私はこのようにそれを行うだろう

- (NSUInteger)indexOfObjectPassingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))predicate 

を使用することができます

1

-(NSInteger)indexFromDate:(NSString *)date{ 

    return [myClassObject.ObjectArray indexOfObjectPassingTest: 
      ^(id obj, NSUInteger idx, BOOL *stop) { 
       return ([obj isEqualToString:myIdentifier]); 
      }]; 
} 
1

あなたは私はそれが可能だろうと思ったとして、これは本当にハードではなかったNSPredicate

[array indexOfObject:[[array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF.date == %@",date]] objectAtIndex:0]] 
関連する問題