如何在 Xcode 6.1 的 Swift 中使用 NSURL?

Posted

技术标签:

【中文标题】如何在 Xcode 6.1 的 Swift 中使用 NSURL?【英文标题】:How do I use NSURL in Swift in Xcode 6.1? 【发布时间】:2014-11-13 13:15:14 【问题描述】:

我做错了什么?我正在尝试使用 api,但首先我需要学会在 swift 中做 http 的东西。

我在操场上使用这段代码:

// Playground - noun: a place where people can play

// import Cocoa - this is commented out due to "No such module 'Cocoa'"
import XCPlayground

let url = NSURL(string: "http://***.com")
let request = NSURLRequest(URL: url)

var waiting = true

NSURLConnection.sendAsynchronousRequest(request, queue:NSOperationQueue.currentQueue() 
    response, maybeData, error in
    waiting = false
    if let data = maybeData 
        let contents = NSString(data:data, encoding:NSUTF8StringEncoding)
        println(contents)
     else 
        println(error.localizedDescription)
    
    

    while(waiting) 
    NSRunLoop.currentRunLoop().runMode(NSDefaultRunLoopMode, beforeDate: NSDate())
    usleep(10)

并在控制台中收到这些错误:

Playground execution failed: <EXPR>:12:11: error: use of unresolved identifier 'NSURL'
let url = NSURL(string: "http://www.***.com")
          ^
<EXPR>:14:12: error: use of unresolved identifier 'NSURLSession'
let task = NSURLSession.sharedSession().dataTaskWithURL(url) (data, response, error) in
           ^
<EXPR>:15:13: error: use of unresolved identifier 'NSString'
    println(NSString(data: data, encoding: NSUTF8StringEncoding))
            ^
<EXPR>:15:44: error: use of unresolved identifier 'NSUTF8StringEncoding'
    println(NSString(data: data, encoding: NSUTF8StringEncoding))

【问题讨论】:

我建议你使用 NSUrlConnection 和 NSUrlConnectionDataDelegate 进行异步调用。尝试做一个测试项目,因为在 Playgroud 中可能有点困难,恕我直言,能够对其进行测试并准备好在真实环境中使用 【参考方案1】:

您需要导入 Foundation 框架以使这些类型可用。因此,将以下导入行添加到您的 Playground:

import Foundation

【讨论】:

谢谢。你也知道为什么我不能导入 Cocoa 吗? 这个问题可能会有所帮助:***.com/questions/24099364/…

以上是关于如何在 Xcode 6.1 的 Swift 中使用 NSURL?的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 6.1 if/else/for/switch 语句不自动完成(仅限 Swift)

Swift:GM Xcode 6.1 和 AFNetworking AFJSONResponseSerializer

在 Xcode 6.1 中,我有两个导航按钮。但它们在故事板上不再可见。我如何让他们回来?

Xcode 6.1 的 segue 动作列表中没有“显示”

如何读取 Xcode 6.1 Instruments .trace 文件?

如何在 Xcode 6.1 中安装 iOS 7.0 和 iOS 8.0 模拟器?