iOS 용 Google Places API를 사용하고 있습니다. 자동 완성 함수를 만드는 중입니다.이 단추는 4 개의 단추 (이 질문과 관련이없는 이유로)에 제안을 넣겠습니다. 사용자 입력이 특정 길이에 도달하면 응용 프로그램이 충돌합니다. 이 경우, _pred1, _pred2, _pred3에서UITextField 텍스트가 특정 길이에 도달하면 응용 프로그램이 중단되는 이유는 무엇입니까?
_request = [[NSMutableURLRequest alloc]init];
_escapedUrlString = [_textField.text stringByAddingPercentEscapesUsingEncoding: NSASCIIStringEncoding
_requestURL = [NSString stringWithFormat: @"https://maps.googleapis.com/maps/api/place/autocomplete/json?input=%@&key=mykey",_escapedUrlString];
[_request setURL: [NSURL URLWithString:_requestURL]];
[_request setHTTPMethod:@"GET"];
NSURLResponse *requestResponse;
_requestHandler = [NSURLConnection sendSynchronousRequest:_request returningResponse:&requestResponse error:nil];
_requestReply = [[NSString alloc]initWithBytes: [_requestHandler bytes] length: [_requestHandler length] encoding: NSASCIIStringEncoding];
_data = [_requestReply dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:_data options:0 error:nil];
[_pred1 setTitle: [[[_json objectForKey:@"predictions"] objectAtIndex:0]objectForKey:@"description"] forState: UIControlStateNormal];
[_pred2 setTitle: [[[_json objectForKey:@"predictions"] objectAtIndex:1]objectForKey:@"description"] forState: UIControlStateNormal];
[_pred3 setTitle: [[[_json objectForKey:@"predictions"] objectAtIndex:2]objectForKey:@"description"] forState: UIControlStateNormal];
[_pred4 setTitle: [[[_json objectForKey:@"predictions"] objectAtIndex:3]objectForKey:@"description"] forState: UIControlStateNormal];
, _pred4 내 버튼이 있고 _textField은, 분명히, 사용자 입력이 입력되고있는 텍스트 필드 다음과 같이 내 코드입니다. 이 코드는 - (IBEvent) editChange 메소드 내에 있습니다. 코드가 작동하고 자동 완성 예측이 버튼 제목을 채 웁니다.
내 문제는 내가 특정 길이의 문자열을 입력하면, 나는 다음과 같은 오류 메시지가 나타날 것입니다 :
2014-10-07 16:21:48.740 maptest[41319:529100] *** Terminating app due to uncaught exception 'NSRangeException', reason: '-[__NSCFArray objectAtIndex:]: index (1) beyond bounds (1)'
내 가정은 입력 문자열이 길어지면, 예측의 수가 너무 단축,이다 후기의 제목에는 넣을 내용이 없습니다. 그러나 반환 된 예측 수가 줄어들면 앱이 중단되는 것을 방지하는 방법을 모르겠습니다.
도움을 주시면 감사하겠습니다.
당신이 존재하지 않는 요소를 가리키고 있습니다. 키 @ "예측"에 대한 객체가 x 위치에 유효한 값을 가지고 있는지 확인하십시오. –
오브젝트가 == nil이고 텍스트 만 변경하면 조건을 추가하려고했습니다 아니지만 여전히 오류가 발생합니다. – JayB127
왜 JSON 사전을'json'이라는 변수에 넣었습니까?'_json'이라는 다른 변수를 사용하여 버튼 제목을 설정 했습니까? 그리고 왜 [[_json objectForKey : @ "predictions"]'를 네 번 호출합니까? 한 번 호출하고 결과를 변수에 저장하십시오. 그런 다음 변수의 길이를 확인하고 변수를 다시 사용할 수 있습니다. – rmaddy