0

次のコードを使用して、クリックされた UISegmentedControl の現在のセグメントに基づく情報を UIButton と UITextField にロードしようとしていますが、SIGABRT クラッシュが発生しています。コードは次のとおりです。

- (void)updateInfo {

NSLog(@"count1:%d", [self.accounts count]);

[self saveInfo];

NSLog(@"count2:%d", [self.accounts count]);

NSDictionary *dict = [self.accounts objectAtIndex:0];
NSData *imageData = [dict objectForKey:@"ProfileImage"];
UIImage *imageProfile = [UIImage imageWithData:imageData];
[image1 setImage:imageProfile];

NSDictionary *dict2 = [self.accounts objectAtIndex:1];
NSData *imageData2 = [dict2 objectForKey:@"ProfileImage"];
UIImage *imageProfile2 = [UIImage imageWithData:imageData2];
[image2 setImage:imageProfile2];

if ([self.accounts objectAtIndex:accountSC.selectedSegmentIndex] != nil) {
    NSDictionary *dict = [self.accounts objectAtIndex:accountSC.selectedSegmentIndex];
    //NSString *name = [dict objectForKey:@"Name"];
    NSString *name = [accountSC titleForSegmentAtIndex:accountSC.selectedSegmentIndex];
    [Name setText:name];
    NSData *imageData = [dict objectForKey:@"ProfileImage"];
    UIImage *imageProfile = [UIImage imageWithData:imageData];
    [pictureButton setImage:imageProfile forState:UIControlStateNormal];
}
else {
    Name.text = nil;
    [pictureButton setImage:nil forState:UIControlStateNormal];
}

}

コードの最初と 2 番目の大きなブロックは、さまざまな objectAtIndex 番号に基づく UIImage を確認したかったため、一時的なものです。

コンソールのクラッシュ ログは次のとおりです。

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFConstantString objectForKey:]: unrecognized selector sent to instance 0x2cc08'

これが起こる理由は何ですか?使用している他のコードを投稿する必要がありますか?

私は本当にこれについて助けが必要です、私は私の髪を引っ張っています!!!

Edit1:私はこのコードを使用していますが、isKindOfClass についても話していましたよね? とにかく、これはコードです:

NSDictionary *dict = [self.accounts objectAtIndex:1];
if ([dict isKindOfClass:[NSDictionary class]]) {
    NSLog(@"YES");
}
else {
    NSLog(@"NO");
}

今テスト中...

4

2 に答える 2

3

オブジェクト、具体的には、プログラムで作成した (またはプログラムで作成した) オブジェクトではなく、フォームのどこかにコードに直接入力しobjectForKey:たオブジェクトに送信しています。誰かが辞書以外のものを に入れています。NSString@"..."self.accounts

于 2011-07-25T01:52:16.487 に答える