NSDictionary按类别添加-objectAtIndex

时间:2011-11-06 15:49:20

标签: objective-c cocoa nsdictionary categories

我正在为Quartz Composer编写自定义补丁,我使用结构作为输入。结构是Obj-C中的NSDictionary,所以我使用NSDictionary的方法来处理这些结构。根据我构建这些结构的方式,key可以是NSString类型或NSNumber。

通常QC不给出命名结构,键是“0”......“n”或0 ... n所以我决定在NSDictionary类别中添加-objectAtIndex:

的NSDictionary + Utils.h

#import <Foundation/Foundation.h>

@interface NSDictionary (Utils)

- (id)objectAtIndex:(NSInteger)index;

@end

的NSDictionary + Utils.m

#import "NSDictionary+Utils.h"

@implementation NSDictionary (Utils)

- (id)objectAtIndex:(NSInteger)index
{
    NSString* key = [NSString stringWithFormat:@"%d", index];
    return [self objectForKey:key];
}

@end

它非常适用于我使用Kineme Struc Maker补丁构建结构的项目之一。 在另一个项目中,我使用了apple提供的Queue补丁。键不是NSString类型,而是NSNumber类型。我已经重写了代码以符合NSNumber密钥:

的NSDictionary + Utils.m

@implementation NSDictionary (Utils)

- (id)objectAtIndex:(NSInteger)index
{
    NSNumber* key = [NSNumber numberWithInteger:index];
    return [self objectForKey:key];
}

@end

不幸的是,它总是给出一个空值,但使用:

[self.inputSoundStruct objectForKey:[NSNumber numberWithInteger:0]]

为什么这行代码有效但不是objectAtIndex?我一定错过了什么但是什么?

0 个答案:

没有答案