5

私はiPhoneの初心者です。私のコードでは、キャッチされていない例外「NSInvalidArgumentException」が原因でアプリを終了するという実行時エラーが発生しています。

私のコードは

- (void)viewDidLoad
{
    [super viewDidLoad];
     NSString *path=[[NSBundle mainBundle] pathForResource:@"Animalfile" ofType:@"plist"];
    NSDictionary *dict=[NSDictionary dictionaryWithContentsOfFile:path];
    NSArray *animal=[dict valueForKey:@"image"];
    NSLog(@"print:%@",dict);
    NSLog(@"hello:%@",animal);

    UIImage *img=[animal objectAtIndex:currentImage];
        [animalphoto setImage:img];

}

私のコードに適用される提案とソースコードを教えてください....

4

1 に答える 1

11

文字列を画像として処理しようとすると、問題が発生します。

UIImage *img = [animal objectAtIndex:currentImage];

配列は、メソッドを使用してファイルから読み取っanimalたディクショナリから取得されるため、配列内の値を画像にすることはできません。このメソッドは、タイプ、、、、、、、またはオブジェクト作成します。メソッドで作成できるタイプのリストにないため、キャストは無効です。dictdictionaryWithContentsOfFile:NSStringNSDataNSDateNSNumberNSArrayNSDictionaryUIImagedictionaryWithContentsOfFile:

NSStringエラーメッセージから、の代わりに取得しているように見えますUIImage。その文字列の値をチェックして、それが何を表しているかを確認します。おそらく、画像を取得するために使用できるURL、ファイル名、またはその他の形式の識別子です。文字列の内容に応じて、文字列imgの値に基づいてロードするようにプログラムを変更します。おそらくコードは

UIImage *img = [UIImage imageNamed:[animal objectAtIndex:currentImage]];

しかし、文字列の値を知らずに確実に判断することは不可能です。

于 2012-07-07T10:48:22.833 に答える