在Objective C中初始化另一个类类型的数组

时间:2013-08-01 16:07:07

标签: objective-c arrays initialization

我有usuario类型的变量TuplaUsuario。当我插入数据时,我想将NSMutableArray cups初始化为类型为Array的{​​{1}}。我该怎么办?

这是我最新的代码:

TuplaUsuario:

TuplaCups

TuplaCups:

//TuplaUsuario.h:
@interface TuplaUsuario : NSObject
{
    NSMutableString* mensaje;
    NSString* usuario;
    NSString* password;
    NSMutableArray* cups;
    //More variables
}
//Property for each variable
- (id)initWithString:(NSString *)identifier;

//TuplaUsuario.m:
//Synthesize for each variable
- (id)initWithString:(NSString *)identifier {
    if ( self = [super init] ) {
        mensaje = [[NSMutableString alloc] initWithString:identifier];
        usuario = [[NSString alloc] initWithString:identifier];
        password = [[NSString alloc] initWithString:identifier];
        cups = [[NSMutableArray alloc] init];
    }
    return self;
}

2 个答案:

答案 0 :(得分:1)

Objective-C中的数组(如在NSArray和NSMutableArray中)没有输入,它们可以保存任何对象类型,并且您无法轻易限制进入的内容。因此,您有责任确保只有您想要的类型的对象通常,这不是问题,除非你暴露可变数组,以便其他对象可能将东西放入你的数组。在这种情况下,最好提供访问者:

- (void)addFoo:(Foo *)foo {
    [myMutableArray addObject:foo];
}

- (void)removeFoo:(Foo *)foo {
    [myMutableArray removeObject:foo];
}

// Return an array of Foo instances.
- (NSArray *)foos {
    return [[myMutableArray copy] autorelease];
}

答案 1 :(得分:1)

Objective-C没有像C#或C ++那样的泛型概念。毕竟没有模板。您只需要知道您放入数组的对象类型。如果要混用它们,可以使用isKindOfClass:来测试该类。