NSDictionary добавить -objectAtIndex по категориям - PullRequest
1 голос
/ 06 ноября 2011

Я пишу собственный патч для Quartz Composer и работаю со структурами в качестве входных данных.Структура - это NSDictionary в Obj-C, поэтому я использую методы NSDictionary для работы с этими структурами.В зависимости от того, как я строю эти структуры, ключ может иметь тип NSString или NSNumber.

Обычно QC не дает именованные структуры, а ключи имеют значение "0" ... "n" или 0 ... n, поэтому я 'мы решили добавить -objectAtIndex в категорию NSDictionary:

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.В другом проекте я использую патч Queue от Apple.Ключи не являются типом 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?Должно быть, я что-то упустил, но что?

...