Ios 一串不可转换为';NSString';
我正在学习Udemy上的Apple WatchKit课程,其中我创建了一个货币转换类型的应用程序。以下语法适用于视频中的绅士,但给了我一个错误:Ios 一串不可转换为';NSString';,ios,swift,Ios,Swift,我正在学习Udemy上的Apple WatchKit课程,其中我创建了一个货币转换类型的应用程序。以下语法适用于视频中的绅士,但给了我一个错误: func parser(parser: NSXMLParser, foundCharacters string: String?) { .... currencyConversions[getCurrency] = (string as NSString).doubleValue 他说我们需要首先将这个对象转换成一个NSString,然后将它转换成
func parser(parser: NSXMLParser, foundCharacters string: String?) {
....
currencyConversions[getCurrency] = (string as NSString).doubleValue
他说我们需要首先将这个对象转换成一个NSString,然后将它转换成一个double。但是,我得到以下错误:
绳子?不能转换为“NSString”
也许他正在使用更新版本的Swift/Xcode?如何修复此问题?NSString有一个从普通字符串组成的构造函数。尝试从NSString(string!)调用它,希望它能工作 这适用于Xcode 6.4和Xcode 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
大于数组的最大索引。这是另一个问题。