2011-12-22 92 views
1

我可以創建一個包含myArray對象的所有哈希值這樣的NSArray想NSArray的valueForKey返回數組索引

NSArray *a = [myArray valueForKey:@"hash"]; 

我傳遞給valueForKey:什麼鍵獲得一個數組包含myArray的索引?

說myArray有n項。我想要做這樣的事情:

NSArray *a = [myArray valueForKey:@"index"]; 

回答

2
NSArray * arrayWithNumbersInRange(NSRange range) 
{ 
    NSMutableArray * arr = [NSMutableArray array]; 
    NSUInteger i; 
    for(i = range.location; i <= range.location + range.length; i++){ 
     [arr addObject:[NSNumber numberWithUnsignedInteger:i]; 
    } 

    return arr; 
} 

NSArray * indexArray = arrayWithNumbersInRange((NSRange){0, [myArray length]-1}); 
1

您可以查詢一個NSArray爲對象的指數與indexOfObject:

NSArray *a = [myArray valueForKey:@"hash"]; 
NSInteger index = [myArray indexOfObject:a]; 
+1

這不回答這個問題。給定一個包含n個對象的數組,我想創建一個包含整數'0,1 ... n-1'的數組。 – SundayMonday 2011-12-22 01:36:44

+2

數組中的鍵總是按順序從0 - > count - 1,它們不是可可對象,因此不會返回所要求的方法。 – Jessedc 2011-12-22 02:04:10

0

創建的超NSArray返回索引:

// 
// CapArrayOfIndex.h 
// Created by carmin politano on 7/26/12. 
// no rights reserved 
// 

@interface CapArrayOfIndex : NSArray { 
    /*! Simulated constant array containing an array of NSNumber representing the index. */ 
    NSUInteger iCount; 
    //*! NSNotFound causes bybass of index bounds testing. */ 
} 
#pragma mark create 
+ (CapArrayOfIndex*) withCount: (NSUInteger) aCount; 
@end 

// 
// CapArrayOfIndex.mm 
// Created by carmin on 7/26/12. 
// no rights reserved 
// 

#import "CapArrayOfIndex.h" 

@implementation CapArrayOfIndex 
#pragma mark NSCopying 
- (id) copyWithZone: (NSZone*) aZone { 
    /*! New allocation required because -count is a mutable property. */ 
    return [CapArrayOfIndex withCount: self.count]; 
} 
#pragma mark create 
+ (CapArrayOfIndex*) withCount: (NSUInteger) aCount { 
    CapArrayOfIndex* zArray = self.alloc; 
    zArray->iCount = aCount; 
    return zArray; 
} 
#pragma mark NSArray 
- (NSUInteger) count { 
    return iCount; 
} 
- (void) setCount: (NSUInteger) aCount { 
    iCount = aCount; 
} 
- (id) objectAtIndex: (NSUInteger) aIndex { 
    /*! My code performs a bounds test using unusual macros: return [ViaUInteger RaiseIfObjectAtIndex(nil, self, aIndex, nil)]; */ 
    return [NSNumber numberWithInteger: aIndex]; 
} 
@end 
+0

此版本已經過測試。它應該可以自動合成屬性計數(刪除它的實例變量和方法),但我現在不使用此代碼(現在不能測試修改)。 – carmin 2014-01-17 00:51:49