JSON в какао (с YAJL) - PullRequest
       6

JSON в какао (с YAJL)

1 голос
/ 07 мая 2010

сначала, простите за мой английский ...:)

Я использую YAJL Framework http://github.com/gabriel/yajl-objc

Мой файл выглядит так:

[ [ 3753700,  
{ "altitude" : 36950,  
      "heading" : 129.918421384319,  
      "latitude" : 47.554033252495699,  
      "longitude" : 8.2125612837369903,  
      "pointType" : "EXTRAPOLATED",  
      "speed" : 455.04395392093699,  
      "timestamp" : 1273252673301,  
      "verticalRate" : 0.0  
    }   
  ],  
  [ 3753700,  
    { "altitude" : 36950,  
      "heading" : 129.918421384319,  
      "latitude" : 47.552708437680799,   
      "longitude" : 8.2149074662342798,  
      "pointType" : "EXTRAPOLATED",  
      "speed" : 455.04395392093699,  
      "timestamp" : 1273252674555,  
      "verticalRate" : 0.0  
    }  
  ]  
]

Я пробовал это в x-варианте, но я всегда получаю «NSInvalidArgumentException» из консоли:

2010-05-07 20:17:30.998 testApp[2365:207] *** -[NSConcreteData yajl_JSON]: unrecognized selector sent to instance 0x1353d0
2010-05-07 20:17:31.006 testApp[2365:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSConcreteData yajl_JSON]: unrecognized selector sent to instance 0x1353d0'

Как правильно прочитать данные?

спасибо за помощь

Ответы [ 2 ]

5 голосов
/ 08 мая 2010

Добавили ли вы команды ‘-ObjC‘ и ‘-load_all to в флаги компоновщика для своей цели? Если они отсутствуют, категории, присутствующие в статических библиотеках, не будут доступны в скомпилированном двоичном файле.

Из документов: в разделе «Другие флаги компоновщика» в вашей цели добавьте -ObjC и -all_load (чтобы загружалась категория NSObject + YAJL).

0 голосов
/ 09 мая 2010

Я не знаю, какую платформу вы используете, но вы пробовали json-framework, доступную в Google Code ? Я использовал его в нескольких проектах, и у меня никогда не было с этим проблем.

+ (NSString *)stringWithUrl:(NSURL *)url {
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url
                                                cachePolicy:NSURLRequestReturnCacheDataElseLoad
                                            timeoutInterval:30];
    NSData *urlData;
    NSURLResponse *response;
    NSError *error;

    urlData = [NSURLConnection sendSynchronousRequest:urlRequest
                                    returningResponse:&response
                                                error:&error];

    return [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding];
}

+ (id)objectWithUrl:(NSURL *)url {
    SBJSON *jsonParser = [SBJSON new];
    NSString *jsonString = [self stringWithUrl:url];

    return [jsonParser objectWithString:jsonString error:NULL];
}

С помощью этих методов вы можете легко вызвать [YourJSONHelperClass objectWithUrl:yourServiceUrl], который вернет вам NSDictionary в ответ.

НТН
-f

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...