2016-09-12 3 views
1

でfirebaseデータベースから値を抽出するために、配列を反復しますは、基本的な質問のように聞こえるかもしれません迅速

  1. エラー「タイプ__NSCFNumberの値をNSSTringにキャストできませんでした」が表示されます。使用している場合extractedSku = skuList[i]!.value["sku"] as! String

  2. as! Stringを削除すると保存されますが、文字列として保存されません。これを文字列として保存するにはどうすればよいですか?


IがのviewDidLoadで

skuArray = [AnyObject?]() 

配列にfirebaseからデータを添付している、私が 'SKU' を抽出し、変数に格納するskuArrayを反復しています。 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

下地タイプStringを取得するstringValueプロパティを使用し、NSNumberあるので:

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

完璧!あなたのお手伝いと助言のために@ヴァカワマありがとうございます。 – gk103

関連する問題