2016-10-09 20 views
0

の配列の配列の谷反復私は私は私の質問のための最終的な解決策だった(ここでは:Store CLLocation Manager Values in Device swift)と思った辞書の配列正常に作成されていると、ここで私が思い付いたコードです:は、作成した辞書

func arrayOfDictionaries() { 
    var offline:[[String:AnyObject]] = [] 
    offline.append(["LATITUDE: ": userLocation.coordinate.latitude, "LONGITUDE: ": userLocation.coordinate.longitude, "SPEED: ": userLocation.speed]) 

    NSUserDefaults().setObject(offline, forKey: "offLine") 

    if let offLinePositions = NSUserDefaults().arrayForKey("offLine") as? [[String:AnyObject]] { 
     //print(offLinePositions) 


     for item in offLinePositions { 
      print(item["LATITUDE: "]! as! NSNumber) // A, B 
      print(item["LONGITUDE: "]! as! NSNumber) // 19.99, 4.99 
      print(item["SPEED: "]! as! NSNumber) // 1, 2 
     } 
    } 

} 

しかし、私はアプリをテストしたとき、私は1つの位置が配列に格納されていることに気付きました。だから私の考えは、別の配列を作成し、最初のものから値を挿入することです。どうやってやるの?

答えて

0

offlineの配列を作成し、1つの項目を追加して、offLineの配列をユーザーのデフォルトでこれで上書きします。だからこそあなたには1つのアイテムしかありません。

まず、ユーザデフォルトから既存の配列は、それに別の項目を追加し、ユーザーのデフォルトに戻ってそれを書きつかむしようとする必要があります。

func arrayOfDictionaries() { 
    let defaults = NSUserDefaults.standardUserDefaults() 
    var offline:[[String:AnyObject]] 
    if defaults.arrayForKey("offLine") != nil { 
     //Grab offLine array from user defaults 
     offline = defaults.arrayForKey("offLine") as! [[String:AnyObject]] 
    } else { 
     //Setting the offLine array for the first time 
     offline = [] 
    } 
    offline.append(["LATITUDE: ": userLocation.coordinate.latitude, "LONGITUDE: ": userLocation.coordinate.longitude, "SPEED: ": userLocation.speed]) 

    defaults.setObject(offline, forKey: "offLine") 

    if let offLinePositions = NSUserDefaults().arrayForKey("offLine") as? [[String:AnyObject]] { 
     //print(offLinePositions) 


     for item in offLinePositions { 
      print(item["LATITUDE: "]! as! NSNumber) // A, B 
      print(item["LONGITUDE: "]! as! NSNumber) // 19.99, 4.99 
      print(item["SPEED: "]! as! NSNumber) // 1, 2 
     } 
    } 

} 
+0

初めてで働いていました。 Arrayに2つのキーを追加して、それをクラッシュしました(最初のキーが追加されました)。だから私はviewDidLoadのデフォルトをリセットしていなかったことを覚えています。完璧な作業! – ggirao

関連する問題