2016-06-20 24 views
0

JSONまたはREST APIに関係なく、ウェブサイトのコンテンツをポーリングしようとすると、動作しないようです。同じコードがiOS Appで動作しますが、Swift macOS Terminalアプリケーションで使用されてもコンテンツは取得されません。主な理由は何ですか?Xcode Swift macOS、端末アプリケーションがNSURLSessionを実行していない

プロジェクトにはInfo.plistファイルがありません。

ここでは、iOSアプリケーションでは動作するが、macOS端末アプリケーションでは動作しないコード例を示します。簡単なjsonParser()を使って関数を呼び出します。これはNSURLSessionを開始し、到着時にJSONを出力します。

enum JSONError: String, ErrorType { 
    case NoData = "ERROR: no data" 
    case ConversionFailed = "ERROR: conversion from JSON failed" 
} 

func jsonParser() { 
    let urlPath = "https://api.coindesk.com/v1/bpi/currentprice.json" 
    guard let endpoint = NSURL(string: urlPath) else { 
     print("Error creating endpoint") 
     return 
    } 
    let request = NSMutableURLRequest(URL:endpoint) 
    NSURLSession.sharedSession().dataTaskWithRequest(request) { (data, response, error) in 
     do { 
      guard let data = data else { 
       throw JSONError.NoData 
      } 
      guard let json = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? NSDictionary else { 
      throw JSONError.ConversionFailed 
     } 
     print(json) 
    } catch let error as JSONError { 
     print(error.rawValue) 
    } catch let error as NSError { 
     print(error.debugDescription) 
    } 
    }.resume() 
} 
+0

実行時に問題を再現して投稿する[スモール、自蔵、コンパイル可能](http://www.sscce.org/)Swiftファイルを作成できますか? – zneak

+0

http://stackoverflow.com/questions/25126471/cfrunloop-in-swift-command-line-programの重複はありますか? –

+0

サンプルコードを提供するために編集されました。 –

答えて

0

私は私のメインプログラムコードの末尾に

dispatch_main() 

を追加することによって、私の問題を解決することができました。上に挙げたのは、Webデータを要求する機能でした。それを指摘してくれたMartinとEricに感謝します。

関連する問題