2016-08-08 4 views
0

私はこのようなURLからデータを取得しています:上記の場合SwiftyJSON解析JSONエラー

let url = NSURL(string: baseURL) 
     let request = NSURLRequest(URL: url!) 
     let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration()) 
     let task = session.dataTaskWithRequest(request) { (data, response, error) -> Void in 
      if error == nil { 
       let swiftyJSON = JSON(data: data!) 
       let results = swiftyJSON[0]["name"] 
       print(results) 
      } else { 
       print("error") 
      } 
     } 

、私はこのようなデータを取得する:

[ 
    { 
     "_id":"123", 
     "_rev":"345", 
     "name":"hey" 
    }, 
    { 
     "_id":"133", 
     "_rev":"33345", 
     "name":"hello" 
    } 
] 

私は常にエラーブロックに終わりますなぜわからないのですか?

クロムコンソールにJSONを貼り付けて、swiftyJSON[0].nameを実行することができました。私は上記のjson OBJECTからすべての要素を出力したいと思います。

エラー:

error Optional(Error Domain=NSURLErrorDomain Code=-1003 "A server with the specified hostname could not be found." UserInfo={NSUnderlyingError=0x7f87514ab570 {Error Domain=kCFErrorDomainCFNetwork Code=-1003 "(null)" UserInfo={_kCFStreamErrorCodeKey=8, _kCFStreamErrorDomainKey=12}}, NSErrorFailingURLStringKey=http://localhost:3000/idea, NSErrorFailingURLKey=http://localhost:3000/idea, _kCFStreamErrorDomainKey=12, _kCFStreamErrorCodeKey=8, NSLocalizedDescription=A server with the specified hostname could not be found.}) 

ご注意は、localhost:3000がオンになっています。

+0

エラーはJsonを解析することではありません。ローカルホストに接続することです。デバイスがローカルホストの同じポートに設定されていることを確認してください。 – MCMatan

答えて

0

貼り付けエラーは、要求のホスト名が見つからないことがあります。 "指定されたホスト名を持つサーバーが見つかりませんでした。" JSONの解析はまったく同じようです。

+0

あなたは、シミュレータまたは本物のiPhoneであなたのアプリを実行していますか? – Tinvy

0

エラーはJSONデータにありません。 URL http://localhost:3000/ideaが機能していないため、データを最初に取り出すことはできません。

ほとんどの場合、URLはMacでは有効ですが、iPhoneでは有効ではありません。 URLは、サーバ側がiPhoneまたはシミュレータ自体で動作していた場合にのみ有効ですが、これはあまりありません。

localhostはグローバルアドレスではありません。 Macでは、Macを指します。 iPhoneでは、iPhone自体を指します。

Macでネットワークユーティリティアプリを開き、IPアドレスを検索してlocalhostのIPアドレスを置き換えます。 http://192.168.1.37:3000/idea。その後、iOSアプリはデータを取得できます。