Versuchen, den Inhalt einer Website abzufragen, egal ob JSON oder REST API, kann ich nicht scheinen, damit es funktioniert. Derselbe Code funktioniert für die iOS-App, aber er wird den Inhalt nicht erhalten, wenn er in einer Swift macOS Terminal-Anwendung verwendet wird. Was ist der Hauptgrund?Xcode Swift macOS, Terminal App nicht NSURLSession
Das Projekt enthält keine Info.plist-Datei.
Hier ist ein Codebeispiel, das innerhalb einer iOS-Anwendung funktioniert, aber nicht innerhalb der macOS-Terminal-Anwendung. Ich rufe die Funktion mit einem einfachen jsonParser() auf, der die NSURLSession initiiert und den JSON druckt, wenn er angekommen ist.
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()
}
Können Sie eine [kleine, eigenständige, kompilierbare] (http://www.sscce.org/) Swift-Datei erstellen, die das Problem reproduziert, wenn Sie es ausführen, und es veröffentlichen? – zneak
Duplizieren von http://stackoverflow.com/questions/25126471/cfrunloop-in-swift-command-line-program? –
Bearbeitet, um Beispielcode bereitzustellen. –