나는 엑스 코드는 내가 예외 만 발생되는 것을 발견을 디버깅하려고하면이 코드allKeys를 사용할 때 응용 프로그램이 충돌합니다. 객체가 하나뿐이기 때문입니까?
NSDictionary *nextArray = [_classDictionary
valueForKeyPath:@"response.page_records.page_record"];
for (NSDictionary *roster2 in nextArray) {
NSArray *keys = [roster2 allKeys];
if ([keys containsObject:@"title"]){
[pageName addObject:[roster2 objectForKey:@"title"]];
}
if ([keys containsObject:@"id"]) {
[pageID addObject:[roster2 objectForKey:@"id"]];
}
}
를 사용할 때마다이 오류를
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-
[__NSCFString allKeys]: unrecognized selector sent to instance 0x9367330'
을 던져 계속 이유를 알 수없는 경우가 키의 객체는 하나뿐입니다.
(
{
"class_id" = 0001;
"id" = 1234;
"title" = "First Page";
},
{
"class_id" = 0002;
"id" = 12345;
"title" = Assignments;
}
)
코드가 예외없이 실행되지만 코드는 단순히
{
"class_id" = 0001;
"id" = 1234;
"title" = "First Page";
}
때 예외가 발생합니다 : 예를 들어 "nextArray은"이 때. 왜 이런 일이 일어날까요? 객체가 하나만있는 경우에도 키에는 객체 제목이 포함됩니다. 이 예외가 던져지고있는 다른 모든 아이디어? 괄호와 관련이 있습니까? (전체 추측) 실제로 진행되고있는 것을 디버깅하는 더 좋은 방법이 있습니까?
편집 : 여기에 _userDictionary가 있습니다. objectforKey : @ "title"의 정렬 된 배열을 갖고 위의 오류를 피하는 가장 좋은 방법은 무엇입니까? NSString
이 allKeys
에 응답하지 않기 때문에
response = {
"status" = ok;
"page_records" = {
"page" = 1;
"page_count" = 1;
"records_per_page" = 50;
"total_record_count" = 2;
"page_record" = (
{
"class_id" = 0001;
"id" = 1234;
"title" = "Test page";
},
{
"class_id" = 0002;
"id" = 12345;
"title" = "testing page 2";
}
);
};
};
}
좋아, 내가 왜 이런 일이 일어나고 있는지에 대한 진전을 보이고있다. 나는 해결책이 없다. 하나의 "제목"만있는 데이터가 NSArray로 처리되고 NSArray에 allKeys 선택자가 없기 때문에 그럴까요? – davis
아니, 그 NSString에 전화하려고 노력하고있다 – DanZimm
사전을 추가, 내 objectofKey 얻을 수있는 내 코드에 대한 대안이있다 : ""제목과 위의 오류를 피하기? – davis