私がやろうとしていることの解決策はかなり簡単だと思いますが、自分でそれを機能させることはできません.
これが私がやろうとしていることです: ゲームのロード時にカードで初期化されるカードゲームを構築しました。現在、これらのカードの一部には特定のプロパティ (カード タイプ、カード名、および特別な配列) があります。カード タイプとカード名のオブジェクトは 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;
}