NSDictionary構造を含むplistを作成しました。キーはラベル(tableview cell.textにデータを入力するために使用します)であり、値はcell.imageに「動的に」データを入力するために使用するファイル名です。正確なpngファイル名がプロジェクトにロードされます。
物事を簡単にするために(私は思ったのですが)、plistをNSDictionaryにロードし、それを2つの配列に分解します(allKeysとallValuesを使用)。
細胞の画像を設定しようとすると、なぜこれが機能するのかわかりません。
cell.image = [UIImage imageNamed:@"bad.png"];
そしてこれはしません(シミュレーターでは-デバッガーでアプリのクラッシュとバーフィングが発生します):
cell.image = [UIImage imageNamed:[rowImageList objectAtIndex:indexPath.row]];
この次の行を2番目のコードの直前に置くことができ、それは問題なく機能するため、objectAtIndexからNSStringを取得しているように見えます。
NSLog(@"Image name: %@", [rowImageList objectAtIndex:indexPath.row]);
また、一時的なNSStringを作成し、それに[rowImageList objectAtIndex:]を割り当ててから、そのNSStringを使用してimageNamed:を提供しようとしました。
デバッガーからの情報は次のとおりです。
-[NSCFArrayの長さ]:認識されないセレクターがインスタンス0x262d910に送信されました
キャッチされなかった例外「NSInvalidArgumentException」が原因でアプリを終了しています。理由:「***-[NSCFArrayの長さ]:認識されないセレクターがインスタンス0x262d910に送信されました」
さらに情報/コードが必要な場合はお知らせください。
編集:rowImageListにデータを入力する方法は次のとおりです。
NSArray *myRowImages = [[NSArray alloc] init];
myRowImages = [searchFilterList allValues];
self.rowImageList = [myRowImages copy];
[myRowImages release];
//where searchFilterList is an NSDictionary that I loaded from a plist
これが私のplistのスクリーンショットです:[IMG] [ ] 1
[/ IMG]
編集:rowImageListの母集団を修正しました:
NSMutableArray *myRowImages = [[NSMutableArray alloc] init];
NSEnumerator *enumerator = [searchFilterList objectEnumerator];
id object;
while ((object = [enumerator nextObject])) {
[myRowImages addObject:[object objectAtIndex:0]];
}
self.rowImageList = myRowImages; //edit: added self. prefix
[myRowImages release];