1

私がやろうとしていることの解決策はかなり簡単だと思いますが、自分でそれを機能させることはできません.

これが私がやろうとしていることです: ゲームのロード時にカードで初期化されるカードゲームを構築しました。現在、これらのカードの一部には特定のプロパティ (カード タイプ、カード名、および特別な配列) があります。カード タイプとカード名のオブジェクトは 1 つのオブジェクトにすぎないため、取得は非常に簡単です (objectatindex を使用して呼び出すことができます)。ただし、特別な配列には、選択したカードに応じて変動するいくつかのキーワードが含まれています。したがって、これらのキーワードを 1 つずつ初期化する代わりに (カード タイプとカード名に対して行ったように)、それらを独自の特別な配列または配列内の配列に配置しました。これが私のコードです:

itemObject クラス:

@synthesize cardName=_cardName;
@synthesize cardType=_cardType;

-(id) initWithCardName:(NSString*)cardName initWithCardType:(NSString*)cardType initWithSpecialArray:(NSArray*) specialArray{
    self=[super init];
    if (self){
        _cardName=cardName;
        _cardType=cardType;
    }
    return self;
}

モデルクラス

-(NSMutableArray*)deck{
    if (_deck==nil){
        _deck=[[NSMutableArray alloc]initWithObjects:
               [[itemObjects alloc]initWithCardName:@"The Long Way" initWithCardType:@"bill" initWithSpecialArray:[[NSArray alloc]initWithObjects:@"fast", @"high", nil]],
               [[itemObjects alloc]initWithCardName:@"A Short Cut" initWithCardType:@"bill" initWithTrendArray:[[NSArray alloc]initWithObjects:@"small", @"tall", nil]],nil];

View Controllerクラス(これは、たとえば「高速」にオブジェクトの1つを呼び出そうとしているところですが、成功していません

NSString* testing=[[[self.model.deck objectAtIndex:indexPath.row]arrayForKey:@"specialArray"]objectAtIndex:0];
NSLog(@"%@",testing);

「specialArray」を正しく初期化したと思いますが、問題はそれをどのように呼び出そうとしているのかですが、そこで間違いを犯した場合は、アドバイスをいただければ幸いです。ありがとう!

編集: この特定の問題は、WendiKidd のおかげで解決されました。specialArray を正しく初期化していないことが判明しました。これは、私がここにリンクしている別の問題につながりました。また、将来に関心のある人のために、修正したコードを以下に投稿しました。

@synthesize cardName=_cardName;
@synthesize cardType=_cardType;
@synthesize specialArray=_specialArray;

-(id) initWithCardName:(NSString*)cardName initWithCardType:(NSString*)cardType initWithSpecialArray:(NSArray*) specialArray{
    self=[super init];
    if (self){
        _cardName=cardName;
        _cardType=cardType;
        _specialArray=specialArray;
    }
    return self;
}
4

1 に答える 1