2013-03-20 15 views
8

Próbuję parsować JSON dla aplikacji ios 6, ale nie mogę sprawić, żeby działało. Przeszukałem wiele forów, ale nie znalazłem rozwiązania, które działa, co rozumiem na tyle, że można je wdrożyć lub zastosować.Operacja nie mogła zostać zakończona. (Błąd kakao: 3840.)

Przepraszam, jeśli jest taka, że ​​tęsknię.

pierwsze mam WebService testową, że o ile mogę powiedzieć Przywraca prawidłową JSON

http://thetrouthunter.com/SVLocationsAPI.php

II, tutaj jest mój kod Objective-C:

+ (NSDictionary *)connectToService:(NSString *)query 
{ 
    NSError *error = nil; 

    query = [NSString stringWithFormat:@"%@&format=json&nojsoncallback=1", query]; 
    query = [query stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

    NSData *jsonData = [[NSString stringWithContentsOfURL:[NSURL URLWithString:query] encoding:NSUTF8StringEncoding error:nil] dataUsingEncoding:NSUTF8StringEncoding]; 

    NSDictionary *results = jsonData ? [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves error:&error] : nil; 

    NSLog(@"locations: %@", results); 

    if (error) 
     NSLog(@"[%@ %@] JSON error: %@", NSStringFromClass([self class]), NSStringFromSelector(_cmd), error.localizedDescription); 

    return results; 
} 

+ (NSArray *)userLocation { 
    NSString *request = [NSString stringWithFormat:@"http://thetrouthunter.com/SVLocationsAPI.php"]; 
    return [[self connectToService:request] valueForKeyPath:@"locations.location"]; 
} 

ls funkcja NSLog drukuje błąd: "Operacja nie mogła zostać zakończona. (Błąd kakao: 3840.)"

Nie mogę zrozumieć, dlaczego tak się dzieje. Próbowałem różnych rzeczy.

Odpowiedz

4

możliwość dodawania %@&format=json&nojsoncallback=1 do adresu URL w connectToService:, a nowe wyniki URL na stronie internetowej, nie można się spodziewać JSON (tj http://thetrouthunter.com/SVLocationsAPI.php&format=json&nojsoncallback=1).

Może być przydatne zarejestrowanie rzeczywistego wyniku z żądania HTTP, aby można było debugować to, aż uzyskasz JSON (tj. Przed wywołaniem funkcji serializacji).

+0

Świetnie, co zadziałało .TAKIE! Ale kiedy jestem gotowy, aby rozpocząć dodawanie parametrów za pomocą ciągu zapytania, jak to zrobić? – dherrin79

+0

Możesz dodać parametry do adresu URL, upewnij się, że wyjście Twojego skryptu to JSON :) – abellina

+0

Rozumiem. Nie zdawałem sobie nawet sprawy, że moja strona przekierowywała na stronę główną po zastosowaniu łańcucha zapytania. Dzięki za pomoc i super szybką odpowiedź. – dherrin79