2016-10-09 3 views
0

ich haben erfolgreich eine Reihe von Wörterbüchern, die ich dachte, eine endgültige Lösung für meine Frage war (hier: Store CLLocation Manager Values in Device swift) und hier ist der Code, ich kam mit:erstellen und durchlaufen ein Array von Arrays von Wörterbüchern Trog

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 
     } 
    } 

} 

Aber als ich die App getestet habe, habe ich festgestellt, dass ich nur 1 Position im Array gespeichert habe. Also denke ich, ein anderes Array zu erstellen und die Werte aus dem ersten einzufügen. Wie kann ich das machen?

Antwort

0

Sie erstellen ein offline Array, fügen ein Element hinzu und überschreiben dann das offLine Array in den Benutzereinstellungen mit diesem. Deshalb haben Sie nur einen Gegenstand darin.

Zuerst müssen Sie versuchen, die vorhandenen Array von den Benutzereinstellungen zu greifen dann ein weiteres Element, um es anhängen und schreiben Sie es zurück zu den Standardeinstellungen zurück:

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

zum ersten Mal gearbeitet. Dann füge ich dem Array zwei Tasten hinzu und stürzte darauf ab (der erste Schlüssel wurde hinzugefügt). Ich erinnere mich, dass ich die Standardeinstellungen von viewDidLoad nicht zurücksetzte. Arbeiten perfekt! – ggirao

Verwandte Themen