2016-09-12 39 views
1

值听起来像一个基本的问题 - 但我没有看到我要去的地方错了..遍历数组提取火力数据库中迅速

我结束了这两种场景:

  1. 我总是收到错误“无法将__NSCFNumber类型的值转换为NSSTring”。如果我使用extractedSku = skuList[i]!.value["sku"] as! String

  2. 如果我删除as! String它会保存它,但它不会保存为字符串。我怎样才能将它保存为字符串?


我已经从附加数据火力到一个数组

skuArray = [AnyObject?]() 
在viewDidLoad中

,我迭代skuArray以提取 'SKU' 和存储到一个变量。存储在SKU阵列

var skuArray = [AnyObject?]() 
var productDetailArray = [AnyObject?]() 

数据是:

[Optional(Snap (aRandomKey) { 
    active = 1; 
    sku = 888888; 
})] 

viewDidLoad中:

let skuList = self.skuArray 

for var i = 0; i < skuList.count ; ++i{ 
    let extractedSku = skuList[i]!.value["sku"] as! String 

    // go into database and extract "products" details by sku 
    self.databaseRef.child("products/\(extractedSku)").observeEventType(.ChildAdded, withBlock: { (snapshot:FIRDataSnapshot) in 

    self.productDetailArray.append(snapshot) 
}) 

回答

2

由于底层类型为NSNumber,使用stringValue属性获取String

if let extractedSku = (skuList[i]?.value["sku"] as? NSNumber)?.stringValue { 
    // use extractedSku which is of type String 
} 
+0

完美!感谢@vacawama的帮助和建议。 – gk103