2016-04-07 13 views
1

JSONの解析に問題があります。JSON NSBundleエラー - スレッド1:EXC_BAD_INSTRUCTION(コード= EXC_I386_INVOP、サブコード= 0x0)

これはJSONの構造である:

[{"id":33,"name":"5","sort":2},{"id":34,"name":"6","sort":3},{"id":35,"name":"7","sortOrder":4}] 

そして実行した後、私は致命を持っている:

Thread 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)” with code "fatalError("error")" 

問題はNSBundleです。

guard let path = NSBundle.mainBundle().pathForResource("sections", ofType: "json"), 
     let jsonData = NSData(contentsOfFile: path) else { 
      fatalError("error") 
    } 
    do { 
     if let sections = try NSJSONSerialization.JSONObjectWithData(jsonData, 
      options: .MutableContainers) as? [String: AnyObject] { 
       // work with sections 
       let addr = Address(dict: sections) 
       print("sections") 
     } 
    } catch let error as NSError { 
     print(error) 
    } 

しかし、「セクション」はありません。実際、JSONとのリンクにはパスがありません。オブジェクト(ID、名前、並べ替えなど)だけです。だから私はこの問題を管理するためにパスを変更する必要がありますか?あなたは、この目的のために、「DocumentDirectoryとUserDomainMask」でファイルをチェックする必要が

+0

あなたのアプリケーションに 'sections.json'というファイルがありますか?もしそうでなければ、NSBundleで何をしていますか? – Larme

+0

いいえ、JSONはURLから文字列として取り込まれます。ではNSBundleの代わりに何を使うべきですか? – Szekspir

+0

文字列はどのように取得しますか?それを取得し、それをNSDataに変換します(メソッドがあります)。 – Larme

答えて

-1

は、ファイルが利用可能な場合は上記のコード

let resourcePath = (bundle as! NSBundle).pathForResource("sections", ofType: "Json") 

は、ディレクトリ内のファイルを見つけるだろう、ファイルが利用可能かどうかを確認する必要があります。

let resourcePath = self.bundle.pathForResource("sections", ofType: "Json"); 

P.SファイルがcopyBundleResourcesにあることを確認してください。

関連する問題