2016-09-22 3 views
0

오늘 아침 Crashlytics에서이 오류가 발생했으며 문제가 무엇인지 알 수 없습니다. 그것에 대해 당신의 의견을 듣는 것은 굉장 할 것이다. 내가 가장 가능성이 멀티 스레딩 문제가 thInk. 하지만 정확히 무엇인지 정확히 지적 할 수는 없습니다.NSOperationQueue 오류 Crashlytics에서 알아 내려고 시도했습니다.

enter image description here

편집 : 나는 좀 더 깊이 파고 여기에 실패 있어요 코드입니다 : 또한

, 나는 오류가 있음을 알아 냈어요 :

유형의 값을 캐스팅 할 수 없습니다 ' __NSSingleObjectArrayI '(0x1aa60bca0)을'NSMutableArray '(0x1aa60bd90)로 변경하십시오. 2016-09-22 08 : 29 : 34.136764 GrabbnGo [4204 : 822290] 형식 '__NSSingleObjectArrayI'(0x1aa60bca0)의 값을 'NSMutableArray'(0x1aa60bd90)로 변환 할 수 없습니다.

이 완벽하게 모든하면서 작업하고 갑자기 문제를 일으키는 앱이 가게에 이미 :/

json = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions()) as? [String: AnyObject] 
      let str = NSString(data: data!, encoding: NSUTF8StringEncoding) 
      print(str) 
      let OrderDictionary = json as NSDictionary 
      let result = OrderDictionary.objectForKey("result") as! NSMutableArray 
+1

소스를 표시하지 않는 이유가 무엇인가요? 521 행 주변의 일부 맥락? – BaseZen

+0

원본과 실제 오류 메시지를 추가했습니다. 마지막 줄은 실패한 줄입니다. –

+0

'!'에서 충돌하는 것을 기반으로하는 많은 자료가 있습니다. '!' Swift 프로그램에서 충돌의 원인이됩니다. 이 질문은 닫아야하며 키워드를 찾아야합니다 : "충돌을 일으키는 래핑을 피하십시오/피하는 방법/안전 해제/오류 처리" – BaseZen

답변

1

확인, 이런 종류의 고유 답을 가지고있다. 기본적으로, 당신은 오용하고 있습니다 NSJSONSerialization, 그리고 그것은 결국 당신을 때리는 시한 버그입니다. 문서에 따르면

:

https://developer.apple.com/reference/foundation/jsonserialization

모든 개체는 NSString,의 NSNumber, NSArray를,있는 NSDictionary, 또는 NSNull의 인스턴스입니다.

이것은 매우 간단하고 명확한 문장입니다. 존중해야합니다. NSMutableArray에 대해서만 말하면, 단지 NSArray입니다. JSON 파서는 그것이 선택하는 NSArray에 대해 호환 가능한 (서브 클래스) 객체를 사용합니다. 배열에 단 하나의 항목이있는 경우에는 내부 유형 __NSSingleObjectArray이 속도와 메모리 모두에서 훨씬 효율적입니다.

result (종종? 가끔? 항상?)에 항목이 하나만 있으므로 JSON 파서가 아닌 다른 선택을 한 서버 또는 고객 행동에 대한 변경 사항은 거의 확실합니다. 신경 써야 겠어. 특히 네트워크 코드 환경에서,

let myJSONParsedArray: NSArray = ... 
let myMutableArray = NSMutableArray(myJSONParsedArray) 

을하지만 먼저 힘 랩 해제 그렇게 위험한 이유에 대해 자세히 알아보기 :

당신이해야 할 모든 당신이 정말로 필요한 경우에서 NSMutableArrayNSArray로 변경하고 구성입니다 유형과 가치 및 악의와 관련하여 데이터를 전혀 신뢰할 수 없으면 언제든지 !!

+0

고마워요. 이것은 정말로 도움이되었습니다.이 문제를 해결하기 위해 저장소에 대한 업데이트가 진행 중입니다. :) –

관련 문제