2013-01-03 2 views
5

저는 SBJson 파서로 새로운 프로젝트를 시작합니다. 사람들은 새로운 iOS 프로젝트를 위해 인터넷에서 최고로 추천하는 것 같습니다. 나는 Stig Brautaset이 당신이 current release (3.1)에서 사용할 수 있다고 주장하는 현재의 방법이 더 이상 사용되지 않는 것처럼 보이거나, 적어도 나의 컴파일러가 말하고있는 것이 무엇인지에 대한 실제적인 문제를 안고있다. 나는 일에 하나를 얻을 수가 캔트 :SBJson iOS 파서 메서드는 더 이상 사용되지 않으십니까?

NSDictionary *dict = [parser objectWithString:responseString error:&error]; 

파서가 sbjson 파서입니다 : 보인다

NSDictionary *dict = [responseString JSONValue]; 

이 나 작업을 수행하는 가장 최신의 방법이 될 수 있습니다. XCode는이 두 기능을 모두 강조 표시하고 사용되지 않음을 알려줍니다.

내가 뭘 잘못하고 있니?

+2

왜 당신이 사과의 NSJSONSerialization 클래스를 사용하지 않는? –

+0

[JSONKit] (https://github.com/johnezang/JSONKit/)은 최고의 파서입니다. IOS 코드가 5.0 이상인 외부 코드 및 대상 장치를 사용하지 않으려면 NSJSONSerialization을 사용해도됩니다. – mspasov

+0

특별히 스트리밍 지원이 필요하지 않다면 iOS4.x 이하는 신경 쓸 필요가 없습니다. 새로운 프로젝트의 경우 NSJSONSerialization을 권장합니다. 그러나 SBJson의 현재 버전은 실제로 3.2이며, 언급 된 메소드의 사용이 중단 된 것은 잘 설명되어 있습니다 (http://sbjson.org/news/2013/sbjson-v3.2.html). –

답변

9

소스 코드 herehere 보면 그것은 모두

- (id)objectWithString:(NSString*)jsonText error:(NSError**)error 

- (id)JSONValue; 

버전 3.2 이후 사용되지 않으며이 버전 4.0에서 제거 될 것으로 보인다. 3.1을 사용하고 있습니까? 모두

- (id)objectWithString:(NSString *)repr; 

- (id)objectWithData:(NSData*)data; 

보기 가능하지되지 않는 반면에

.

대신 사용하는 것이 좋습니다.

다른 대안은 Apple에서 제공하는 NSJSONSerialization 클래스를 사용하는 것입니다.

+0

감사합니다. NSJSONSerialization을 사용하게되었습니다. SBJson과의 계약이 무엇인지 모르지만, 나는 확실히 최신 버전을 가지고있다. 설명서가 그곳에서 개략적입니다. – Jameo

+0

당신은 최신 버전을 가졌으며, 이것은 분명히 3.2 버전입니다. 하지만 설명서가 없어서 사용 중단 경고가 표시되지 않습니다. –

+0

정확히 어떤 설명서가 부족합니까? (나는 그것을 향상시킬 수 있도록 부탁한다.) http://sbjson.org/news/2013/sbjson-v3.2.html 참조. 여기 경고 : http://sbjson.org/api/3.2/Classes/SBJsonParser.html#//api/name/objectWithString:error : –

0

xcode로 쉽게 해결할 수있는 일반적인 방법입니다. 코드 행이 사용되지 않는 경우 키보드의 "alt"키를 누른 상태에서 객체를 이동하여 문제를 제기하고 클릭하는 것이 가장 좋습니다. Xcode는 코드를 작성하는 더 좋은 방법을 제안합니다. 희망이

+0

SBJson 지원 중단에는 적용되지 않습니다. 제안 사항이 없습니다. –

0

에 한번 교체하는 데 도움이 :

NSDictionary *dict = [responseString JSONValue]; 

으로 :

NSDictionary *dict = [[SBJsonParser new] objectWithString:responseString]; 

또는 더 나은 :

SBJsonParser *parser = [SBJsonParser new]; 
id object = [parser objectWithString:responseString]; 
if (parser.error || ![object isKindOfClass:[NSDictionary self]]) 
    @throw parser.error ?: @"not a json dictionary";// or any error handling alternative 
NSDictionary *dict = object;