2016-10-09 51 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數組,向其添加一個項目,然後用此默認值覆蓋offLine陣列。這就是爲什麼你只有一個項目。

首先,你需要嘗試從用戶默認抓住現有的陣列,然後另一個項目追加到它,並把它寫回給用戶的默認值:

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

在第一次合作。比我添加一些2鍵到陣列並墜毀(添加第一個鍵)。所以我記得我沒有重新設置viewDidLoad的默認值。工作完美! – ggirao