хранение кортежей 2-х целых и символа в NSArray, - PullRequest
2 голосов
/ 09 февраля 2012

Я хочу хранить кортежи 2-х целых и char в NSArray. Есть ли более простой способ, чем объявить класс, содержащий 2 целых и символ?

Я попробовал это так, и это работает, но мне кажется, что это довольно сложно. Есть ли лучший и простой способ?

@interface Container : NSObject
@property  NSInteger a;
@property  NSInteger b;
@property  char      c;
@end

@implementation Container
@synthesize a = _a;
@synthesize b = _b;
@synthesize c = _c;

-(Container*) initWitha:(NSInteger) a andB:(NSInteger) b andC: (char) c
{
    if ((self = [super init])) {
        self.a = a;
        self.b = b;
        self.c = c;
    }
    return self;
}  
@end

...
//usage

NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject: [[Container alloc] initWitha:5 andB:6 andC:'D']];

Спасибо

Ответы [ 2 ]

5 голосов
/ 09 февраля 2012

Может быть, вы могли бы просто использовать структуру C?

struct Container {
    NSInteger a; // If you're using char c, why not use int a?
    NSInteger b;
    char c;
};

, тогда вы могли бы сделать что-то вроде

struct Container c;

NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:1]

// Insert
[array addObject:[NSValue value:&c withObjCType:@encode(struct Container)]];

// Retrieve:
struct Container c;
[[array objectAtIndex:i] getValue:&c];
1 голос
/ 09 февраля 2012

Apple рекомендует не оценивать self в конструкторах одновременно с назначением [super init].

Ваш метод инициализации должен будет выглядеть так:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...