0

我有一个usuario类型的变量TuplaUsuario。当我插入它的数据时,我想初始化NSMutableArray cupsArraytype 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;
}

图普拉杯:

//TuplaCups.h:
@interface TuplaCups : NSObject {
    NSString* cups;
    NSString* tarifa;
    NSString* direccion;
    NSString* nombreUsuario;
    NSMutableArray* facturas;
}
//Property for each variable
- (id)initWithString:(NSString *)identifier;

//TuplaCups.m:
//Synthesize for each variable
- (id)initWithString:(NSString *)identifier {
    if ( self = [super init] ) {
        cups = [[NSMutableString alloc] initWithString:identifier];
        tarifa = [[NSString alloc] initWithString:identifier];
        direccion = [[NSString alloc] initWithString:identifier];
        nombreUsuario = [[NSString alloc] initWithString:identifier];
        facturas = [[NSMutableArray alloc] init];
    }
    return self;
}
4

2 回答 2

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];
}
于 2013-08-01T16:15:29.237 回答
1

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

于 2013-08-01T16:16:35.733 回答