1

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] [ http://i42.tinypic.com/14uwffa.jpg] 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];
4

3 に答える 3

1

NSLog()からの出力を再確認し、NSStringを含む配列ではないことを確認します。それがエラーがあなたに伝えていることです。NSStringが期待される場所にNSArrayを渡します。

于 2009-06-02T05:05:15.667 に答える
1

このエラーは、[rowImageList objectAtIndex:indexPath.row]が期待どおりの文字列ではなく配列を返していることを意味します。

値が出力される理由は、配列を出力するには、NSLogステートメントで%@も指定する必要があるためです。

メソッドをデバッグして、[rowImageList objectAtIndex:indexPath.row]のクラスを確認してください。おそらく配列であることがわかります。

于 2009-06-02T05:11:49.247 に答える
0

あなたの plist はキーと文字列のペアであり、何らかの方法で名前を配列にラップしていませんか?

于 2009-06-02T05:57:11.647 に答える