나는 극도로 짜증나는 문제에 봉착했습니다. 나는 초기화 메소드에서 JSON 또는 plist 파일 (나는 둘 다 시도했다)에서 사전을 디코딩 한 다음 해당 사전에서 배열을 검색하는 UITableViewController가있다. 나중에 tableView : numberOfRowsInSection : 메서드에서 해당 배열의 개수를 반환합니다.plist 또는 JSON에서 디코딩 된 배열이 다음에 응답하지 않는 이유는 무엇입니까? 프로그래밍 방식으로 생성 된 배열에서 class 또는 : count가 응답하지 않는 이유는 무엇입니까?
그러나 나를 초월한 이유 때문에, 그 지점에서 배열에 대해 count를 호출하면 응용 프로그램이 충돌하지만 init에서 할당 한 후 직접 호출하는 것은 아닙니다. 또한 NSArray initWithObjects 통해 프로그래밍 방식으로 만든 배열로 초기 할당을 바꿀 경우 잘 작동합니다. INIT에서
JSON 디코딩 :
NSString *jsonPath = [[NSBundle mainBundle] pathForResource:@"Categories" ofType:@"json"];
SBJSON *jsonParser = [SBJSON new];
NSDictionary* dict = [jsonParser objectWithString:[NSString stringWithContentsOfFile:jsonPath encoding:NSUTF8StringEncoding error:nil]];
categories = [dict objectForKey:@"ContentCategories"];
// Outputs correct count
NSLog(@"Count: %@", [NSNumber numberWithInt:[categories count]]);
프로그래밍 INIT :
categories = [[NSArray alloc] initWithObjects: [[NSDictionary alloc] initWithObjectsAndKeys:@"Junk", @"Title"]];
// Outputs correct count
NSLog(@"Count: %@", [NSNumber numberWithInt:[categories count]]);
있는 UITableViewController 행 방법의 수 : I가 아니라 "카테고리"변수를 시도한
// Outputs correctly if programmatically created, crashes if decoded from JSON/plist
NSLog(@"Count: %@", [NSNumber numberWithInt:[categories count]]);
ivar, 재산 - ivar, 그리고 클래스 변수로, 행운을합니다.
도움 주셔서 감사합니다.