我的var contentArray = urlContent.componentsSeparatedByString("")
是抛出错误的代码。是因为我使用的是NSString
吗?它也不会让代码完成工作正常。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var city: UITextField!
@IBOutlet weak var message: UILabel!
@IBAction func buttonPressed(sender: AnyObject) {
var urlString = "http://www.weather-forecast.com/locations/" + city.text.stringByReplacingOccurrencesOfString(" ", withString: "") + "/forecasts/latest"
var url = NSURL(string: urlString)
let task = NSURLSession.sharedSession().dataTaskWithURL(url!){(data, response, error) in
var urlContent = [NSString(data: data, encoding: NSUTF8StringEncoding)]
var contentArray = urlContent.componentsSeparatedByString("")
}
task.resume()
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
答案 0 :(得分:3)
使用括号([
和]
)创建一个数组。只需删除[]
即可。以下代码应该有效。我还打开了可选字符串。
if let urlContent = NSString(data: data, encoding: NSUTF8StringEncoding)
{
let contentArray = urlContent.componentsSeparatedByString("")
}
答案 1 :(得分:2)
该调用的方括号是因为您一直在阅读Objective-C教程。
在swift中你正在创建一个数组。
删除它们。
下一步是该方法创建一个可选字符串。您需要先打开它才能使用该字符串。
阅读Apple免费提供的快速书籍。所有这些都在那里解释。你应该在发布任何更多问题之前阅读它,因为它将全部回答。
答案 2 :(得分:2)
正如其他人告诉你的那样,删除方括号。
另一部分信息是你正在使用的方法,
convenience init?(data data: NSData,
encoding encoding: UInt)
是一个"可用的" init方法。您可以通过定义中的单词init之后的问号来判断。这意味着它可能无效。因此,init方法的结果是可选的。由于它是NSString
的初始化,因此它的返回类型是Optional NSString,或NSString?
。
您需要打开可选项。 Adam的回答是,使用if let
语法,称为"可选绑定。"它将表达式右侧的结果保存为新常量(urlContent
),如果它是非零的,则在if之后运行代码。如果表达式 IS 的右侧为零,则跳过条件代码。