Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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';_Ios_Swift - Fatal编程技术网

Ios 一串不可转换为';NSString';

Ios 一串不可转换为';NSString';,ios,swift,Ios,Swift,我正在学习Udemy上的Apple WatchKit课程,其中我创建了一个货币转换类型的应用程序。以下语法适用于视频中的绅士,但给了我一个错误: func parser(parser: NSXMLParser, foundCharacters string: String?) { .... currencyConversions[getCurrency] = (string as NSString).doubleValue 他说我们需要首先将这个对象转换成一个NSString,然后将它转换成

我正在学习Udemy上的Apple WatchKit课程,其中我创建了一个货币转换类型的应用程序。以下语法适用于视频中的绅士,但给了我一个错误:

func parser(parser: NSXMLParser, foundCharacters string: String?) {
....

currencyConversions[getCurrency] = (string as NSString).doubleValue
他说我们需要首先将这个对象转换成一个NSString,然后将它转换成一个double。但是,我得到以下错误:

绳子?不能转换为“NSString”


也许他正在使用更新版本的Swift/Xcode?如何修复此问题?

NSString有一个从普通字符串组成的构造函数。尝试从NSString(string!)调用它,希望它能工作

这适用于Xcode 6.4Xcode 7.1.1

由于
s
是一个
可选的
字符串
,因此在将其转换为
NSString
之前,需要安全地将其打开。使用零合并运算符
??
执行以下操作:

currencyConversions[getCurrency] = ((string ?? "") as NSString).doubleValue

您需要先打开字符串对象,然后再进行强制转换。在展开之前,不要忘记检查可选对象的nil值

if (string != nil){
   currencyConversions[getCurrency] = (string! as NSString).doubleValue
}

除非你告诉我们他的版本和你的版本,否则我们无法知道他是否有更新的版本。我假设他使用的是Xcode 7+,而我使用的是Xcode 6.4。我尝试过解包,但它不起作用。你需要比“不起作用”更具体一些。你应该真正升级到Xcode 7.1,因为Swift语言自6.4以来发生了重大变化。无论如何,试试这个:
currencyConversions[getCurrency]=string.flatMap{Double($0)}
这会解决你的
字符串吗?不能转换为NSString
错误,这是一个编译错误。如果您仍在此行中看到
致命错误:数组索引超出范围
,则这是一个运行时错误,因为
getCurrency
大于数组的最大索引。这是另一个问题。