我想使用下面的代碼來加載一個UIButton和UITextField的信息基於UISegmentedControl的當前段被點擊,但它正在導致SIGABRT崩潰。 下面是代碼:objectForKey崩潰? iOS
- (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'
有什麼理由這個可以發生?我是否需要發佈我正在使用的其他代碼?
我真的需要幫助,我一直拉我的頭髮!
編輯1: 我正在使用此代碼,你也在談論isKindOfClass吧? 反正這是代碼:
NSDictionary *dict = [self.accounts objectAtIndex:1];
if ([dict isKindOfClass:[NSDictionary class]]) {
NSLog(@"YES");
}
else {
NSLog(@"NO");
}
現在
林測試...
是啊,我這樣做的話,因爲我來說,我需要做一些具體的事情。我需要添加一個對象作爲一個虛擬爲了我的應用程序工作。後來我用NSDictionary替換它。我將如何修改我的代碼才能使其工作? –
這個問題需要更多關於代碼的概述,因爲你顯然已經有一個狀態轉換到另一個狀態,並不是每個人都知道這個動作。然而,一種解決方案可以立即在本地運行,可能是當你從'self.accounts'中取出對象時,檢查它的類型(例如'if([dict isKindOfObject:[NSDictionary class]])')來查看字符串到字典替換已經發生。 – Tommy
此外,如果您需要我發佈更多的代碼,請讓我知道。 –