Swift向下转换AnyObject(Float)到String

时间:2015-03-12 05:50:04

标签: ios string swift double downcast

在开始使用实际的API之前,我正在使用一些虚拟数据。但是我填写一个带有数字的标签时遇到了一些问题,需要添加一个符号。

不是解释所有内容,而是下面的早期设计的屏幕截图: enter image description here

我有一个double,它将作为字典中的double提供,包含不同类型的值。 (字符串:AnyObject)

这是我的虚拟词典数组:

var objects = NSMutableArray()
var dataArray = [   ["stockName":"CTC Media Inc.","action":"sell","stockPrice":12.44],
                    ["stockName":"Transglobal Energy","action":"buy","stockPrice":39.40],
                    ["stockName":"NU Skin Enterprises","action":"buy","stockPrice":4.18]
                ]

现在我的尝试是把它变成一个字符串。

首先,我发现了另一个类似的问题但是使用了Int。他们的解决方案适用于整数:

var StockValueString = String(object["stockPrice"] as Int)

然而,当我尝试使用Float或Double时。我收到一个错误:

var StockValueString = String(object["stockPrice"] as Double)

错误:

Type 'String' does not conform to protocol 'NSCopying'

我尝试添加“?”在“as”之后,但它没有解决它。

我需要将其转换为字符串,因此我可以添加美元符号。并将其显示在标签中。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

怎么样:

let stockPriceKey = "stockPrice"
var StockValueString = "$\(object[stockPriceKey]!)"

答案 1 :(得分:1)

您可以在Swift的字符串中使用变量插值。首先得到你的价格,然后在$ prepended -

的字符串中使用它
var stockValueString=""
if let price=dataArray[0]["stockPrice"] {
    stockValueString="$\(price)"
}

此外,(强)约定变量的注释应以小写字母开头。班级名称以大写字母开头。