Swift 将 AnyObject(浮点型)向下转换为字符串

Swift Downcasting AnyObject (Float) to String

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

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

我有一个双精度型,它将作为字典中的双精度型提供,其中包含不同类型的值。 (字符串: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" 之后,但没有修复它。

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

如有任何帮助,我们将不胜感激!

怎么样:

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

您可以简单地在带有 Swift 的字符串中使用变量插值。首先获取您的价格,然后在带有 $ 前缀的字符串中使用它-

var stockValueString=""
if let price=dataArray[0]["stockPrice"] {
    stockValueString="$\(price)"
}

此外,注意(强)约定变量应以小写字母开头。 Class 名称以大写开头。