0

我正在尝试使用以下代码加载 UIButton 和 UITextField 以及基于 UISegmentedControl 的当前段的信息,该段被单击但它导致 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];
}

}

第一个和第二个大代码块是临时的,因为我想查看基于不同 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 回答
0

NS词典: objectForKey:

objectForKey:返回与键关联的值,如果没有与键关联的值,则返回 nil。

key :标识值的字符串。如果为零,则返回零。

(1)你应该知道key不是空的

(2)你应该知道对象不是空白的并且对象是相同的类型,因为你不应该在 NSDictionary 中使用不同类型的类型。

eg {@"key1":NSString,@"key2":NSArray}//这是一个错误的演示

于 2018-01-18T08:55:11.063 回答