2017-07-19 4 views
0

ist die eingestellte Funktionspeichern json in userDefaults

func setSelectedDivisions(_ division:[Division]) { 

    if (division.count != 0) { 
     self.userDefaults.set(division.toJSONString(), forKey: "selectedDivisions") 
     self.userDefaults.synchronize() 
    } 
    else{ 
     self.userDefaults.removeObject(forKey: "selectedDivisions") 
     self.userDefaults.synchronize() 
    } 
} 

und dies ist die Funktion get

func getSelectedDivisions() -> [Division] { 

    if let json = self.userDefaults.value(forKey: "selectedDivisions"){ 
     print(json) 
    } 

    if let json = self.userDefaults.value(forKey: "selectedDivisions") as? Array<Dictionary<String, Any>> { 
     if json.count != 0{ 
      let divisions = Mapper<Division>().mapArray(JSONArray: json) 
      if divisions.count != 0{ 
       return divisions 
      } 
     } 
    } 
    return [] 
} 

in get-Funktion Ich habe Fehler hat mir gesagt, dass meine Serialisierung falsch ist. diese ist die json ich es

[{ "name" zu bekommen versuchen: "أ", "img": "http://www.smsalmaali.com/images/cclass/21.jpg", "name2": "الصصالاول", "id1": "21", "id2": "1"}]

eine Idee, es zu beheben?

+0

ohnehin schlechter Ansatz die usersDefaults verwenden, um große Mengen zu halten von Daten –

+0

es ist nicht groß zu viel .. und ich bin gezwungen, es zu verwenden –

Antwort

1

Ich denke, diese Zeile Code falsch ist

if let json = self.userDefaults.value(forKey: "selectedDivisions") as? Array<Dictionary<String, Any>> 

zuerst müssen Sie JSON-String in Array-Objekt konvertieren, wie

folgt
let data = (self.userDefaults.value(forKey: "selectedDivisions") as! String).data(using: String.Encoding.utf8) as NSData? 
     if data == nil || data!.length == 0 { 
      return 
     } else { 
      do { 
       let resultJSON = try JSONSerialization.jsonObject(with: data! as Data, options: .mutableContainers) 
       if let json = resultJSON as? Array<Dictionary<String, Any>> { 
        // do something 
       } 
     } catch _ { 
      print("exception ") 
     } 
Verwandte Themen