2016-09-12 65 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