Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios ';[NSString?]和#x27;没有名为'的成员;由字符串和x27分离的组件;_Ios_Xcode_Swift - Fatal编程技术网

Ios ';[NSString?]和#x27;没有名为'的成员;由字符串和x27分离的组件;

Ios ';[NSString?]和#x27;没有名为'的成员;由字符串和x27分离的组件;,ios,xcode,swift,Ios,Xcode,Swift,Myvar contentArray=urlContent.componentsSeparatedByString(“”是引发错误的代码位。是因为我使用的是NSString?它也没有让代码完成按它应该的方式工作 import UIKit class ViewController: UIViewController { @IBOutlet weak var city: UITextField! @IBOutlet weak var message: UILabel!

My
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.
    }


}
使用括号(
[
]
)可以创建一个数组。只需删除
[]
。下面的代码应该可以工作。我还打开了可选字符串的包装

if let urlContent = NSString(data: data, encoding: NSUTF8StringEncoding)
{
  let contentArray = urlContent.componentsSeparatedByString("")
}

该调用周围的方括号是因为您一直在阅读Objective-C教程

在swift中,您正在创建一个数组

移除它们

下一位是该方法创建一个可选字符串。你需要先打开它,然后才能使用字符串


阅读苹果免费提供的swift书籍。所有这些都在这里解释。在发布更多问题之前,您应该先阅读这些内容,这样它会回答所有问题。

正如其他人告诉您的那样,删除方括号

另一个信息是你使用的方法

convenience init?(data data: NSData,
         encoding encoding: UInt)
是一个“可失败”的初始化方法。你可以通过单词init后面的问号来判断它的定义。这意味着它可能不起作用。因此,init方法的结果是可选的。由于它是
NSString
,因此返回类型是可选的NSString,或
NSString?


您需要打开可选的。Adam的回答使用了
if let
语法,称为“可选绑定”。如果表达式右侧的结果为非nil,则将其保存为新常量(
urlContent
),然后在if之后运行代码。如果表达式的右侧为nil,则跳过条件代码。

我复制并粘贴了代码&我得到消息“expected'{after'If'条件和
If let urlContent=NSString(数据:数据,编码:NSUTF8StringEncoding)
代码行。&我得到在
let contentArray=urlContent.componentsSeparatedByString(“”)之后使用未解析标识符“urlContent”
代码行。你为什么要在FogMeister的回答中发表关于其他人建议的代码的评论?返回并在你的问题中添加一个新的部分,显示你的新代码和新代码生成的错误。Adam的代码并不准备复制/粘贴。这是你需要做的概述。(Swift中if后面的语句必须用大括号括起来。您需要在该代码的第二行周围添加大括号。)@duncac ok明白了。这仍然是新的。我添加了一条注释@Duncan@Adam,在if语句的条件部分缺少大括号。我添加了大括号。