/ / objectForKey falha? iOS - ios, acidente, sigabrt

falha de objectForKey? iOS - ios, acidente, sigabrt

Eu estou tentando usar o seguinte código para carregar umUIButton e UITextField com informações baseadas no segmento atual de um UISegmentedControl que é clicado, mas está causando uma falha do SIGABRT. Aqui está o código:

- (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];
}

}

O primeiro e segundo grande bloco de código é temporário porque eu queria ver o UIImage baseado em diferentes números de objectAtIndex.

Aqui está o log de falhas do console:

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

Qualquer razão pela qual isso pode estar acontecendo? Preciso postar algum outro código que estou usando?

Eu realmente preciso de ajuda nisso, eu tenho puxado meu cabelo !!!

Edit1: Eu estou usando este código, também você estava falando sobre isKindOfClass certo? De qualquer forma este é o código:

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

Estou testando agora ...

Respostas:

3 para resposta № 1

Você está enviando objectForKey: para um NSString objeto, especificamente um que você digitou diretamente em seu código em algum lugar @"..." formulário em vez de um que você criou programaticamente (ou criou programaticamente para você). Alguém está colocando algo diferente de um dicionário em self.accounts.


1 para resposta № 2

NSDictionary: objectForKey:

objectForKey: retorna o valor associado à chave ou nil se nenhum valor estiver associado à chave.

key : Uma string identificando o valor. Se nulo, apenas retorne nulo.

(1) você deve saber que a chave não está em branco

(2) você deve saber que o objeto não está em branco e os objetos são do mesmo tipo, porque você não deve usar diferentes tipos de tipos em um NSDictionary.

por exemplo. {@"key1":NSString,@"key2":NSNumber} // esta é uma demonstração de erro