我正在尝试执行以下脚本:
import Foundation
class TestURLSession{
var session: NSURLSession!
func run(){
session = NSURLSession.sharedSession()
let url = NSURL(string: "http://www.veenex.de/tmp/json")
let request = NSMutableURLRequest(URL: url!)
request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
request.HTTPMethod = "GET"
let getDataTask = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
// HTTP Response contains an error
if let httpResponse = response as? NSHTTPURLResponse {
if httpResponse.statusCode != 200 {
print("response was not 200: \(response)")
return
}
}
// Error submitting Request
if error != nil {
print("error submitting request: \(error)")
return
}
// print data
if data != nil{
do {
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSArray
for entry in json {
print(entry)
}
} catch {
print("Error printing data")
}
}
});
getDataTask.resume()
}
}
let testURLSession = TestURLSession()
testURLSession.run()
但是我收到错误消息:“运行代码时出错:未知错误代码132.”。 在Xcode Playground中执行代码可以正常工作。
答案 0 :(得分:6)
尚未编写NSURLSession
的纯Swift实现。查看Apple的GitHub回购基金会上的NSURLSession.swift
文件。
每个方法都是NSUnimplemented()
,这意味着,它还没有实现。在此课程完成之前,它将无法在Linux和IBM的Swift Sandbox上使用。
答案 1 :(得分:1)
我挖掘了错误,这是因某些原因没有发送的消息:
fatal error: sharedSession() is not yet implemented: file Foundation/NSURLSession.swift, line 87
0 swift 0x0000000002f4abf8 llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 40
1 swift 0x0000000002f493f6 llvm::sys::RunSignalHandlers() + 54
2 swift 0x0000000002f4b726
3 libpthread.so.0 0x00007fd9dae43d10
4 libswiftCore.so 0x00007fd9d0e5eac3 _TTSf4s_s_s_n___TFs16_assertionFailedFTVs12StaticStringSSS_Su_T_ + 147
5 libFoundation.so 0x00007fd9d3a5c21f
6 libFoundation.so 0x00007fd9d3b178de
7 libFoundation.so 0x00007fd9dbce10c7
8 libFoundation.so 0x00007fd9dbce1079
9 swift 0x0000000000d0da24 llvm::MCJIT::runFunction(llvm::Function*, llvm::ArrayRef<llvm::GenericValue>) + 996
10 swift 0x0000000000d1102f llvm::ExecutionEngine::runFunctionAsMain(llvm::Function*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, char const* const*) + 1263
11 swift 0x0000000000bebdf8 swift::RunImmediately(swift::CompilerInstance&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, swift::IRGenOptions&, swift::SILOptions const&) + 2312
12 swift 0x000000000076656e
13 swift 0x0000000000761dfe frontend_main(llvm::ArrayRef<char const*>, char const*, void*) + 2590
14 swift 0x000000000075d513 main + 2835
15 libc.so.6 0x00007fd9da1e8a40 __libc_start_main + 240
16 swift 0x000000000075c8f9 _start + 41
Stack dump:
0. Program arguments: /usr/bin/swift -frontend -interpret /swift-execution/code-tmp.swift -target x86_64-unknown-linux-gnu -disable-objc-interop -module-name main -lFoundation -lETSocket
/usr/bin/doit.sh: line 19: 10 Illegal instruction timeout 5 swift -lFoundation -lETSocket -v /swift-execution/$fileroot
所以,我们有一些尚未在Swift中实现的东西。我将在下一个Sandbox补丁中改进错误消息。