2016-09-23 2 views
0

ich eine API Anfrage machen mit Alamofire, bekomme ich dann eine Antwort in JSON Format habe ich dann die JSON in eine NSDictionary analysieren, um die Daten zu erhalten, die ich will. Die Daten, die ich bekomme, sind vier Arrays von verschiedenen Artikeln. Ich möchte die eine neue Liste in Realm erstellen in diese Elemente speichern Hier sind meine Realm Objektklassen.und fügen Sie Artikel

class ListOfDefinitions: Object { 
let listOfItems = List<Item>() 
} 

und

class Item: Object { 

dynamic var AverageCost = Int() 
dynamic var Barcode = "" 
dynamic var Description = "" 
dynamic var InternalUnique = Int() 
dynamic var LastCost = Int() 
dynamic var LimitToMainRegionUnique = Int() 
dynamic var Notes = "" 
dynamic var StockCategoryUnique = Int() 
dynamic var StockCode = "" 
dynamic var StockGroupUnique = Int() 
dynamic var UnitDescriptor = "" 
} 

Hier ist mein Code auf, wie ich die JSON Griff Antwort und wo ich die Daten in meinem Code speichern möchte.

var newItemInStockList : ListOfDefinitions! // declared in the class 
let newItemInStock = Item() 


.responseJSON { response in 



      switch response.result { 

      case .Success(let JSON): 
       // print("Success with JSON: \(JSON)") 

       let response = JSON as! NSDictionary 



       let responseParams = response.objectForKey("ResponseParameters") as! NSDictionary 
       //print(responseParams) 

       //let stockItemGroupList = responseParams.objectForKey("StockItemGroupList") 

       let stockItemList = responseParams.objectForKey("StockItemList") as! NSDictionary 
       //print(stockItemList) 

       let listofDefinitions = stockItemList.objectForKey("ListofDefinitions") as! NSArray 
       print(listofDefinitions.count) 


       for defJson in listofDefinitions { 

        print(defJson["Description"]) 

        someString = defJson["Description"] as! String 
        print(someString) 
// Because there are 4 arrays of items this for loop will be red 4 times, each time it is red I want o create a new list and add the items to the list 
// This comment area is where I tried to create a new list and then .append the items in it, but it doesn't work.     
//      let newOne = ListOfDefinitions() 
//       
//       
//      try! realm.write{ 
//        
//       realm.add(newOne) 
//      } 
//      self.newItemInStock.AverageCost = defJson["AverageCost"] as! Int 
//      self.newItemInStock.Barcode = defJson["Barcode"] as! String 
//      self.newItemInStock.Description = defJson["Description"] as! String 
//      self.newItemInStock.InternalUnique = defJson["InternalUnique"] as! Int 
//      self.newItemInStock.LastCost = defJson["LastCost"] as! Int 
//      self.newItemInStock.LimitToMainRegionUnique = defJson["LimitToMainRegionUnique"] as! Int 
//      self.newItemInStock.Notes = defJson["Notes"] as! String 
//      self.newItemInStock.StockCategoryUnique = defJson["StockCategoryUnique"] as! Int 
//      self.newItemInStock.StockCode = defJson["StockCode"] as! String 
//      self.newItemInStock.StockGroupUnique = defJson["StockGroupUnique"] as! Int 
//      self.newItemInStock.UnitDescriptor = defJson["UnitDescriptor"] as! String 
//       
//      try! realm.write{ 
//        
//       self.newItemInStockList.listOfItems.append(self.newItemInStock) 
//      } 

       } 

      case .Failure(let error): 
       print("Request failed with error: \(error)") 
      } 

Und hier ist das, was ich bekomme, wenn ich die 4-Arrays drucken

enter image description here

+0

Wenn Sie sagen "Die Daten, die ich bekomme, sind vier' Arrays' von verschiedenen Elementen. " Du meinst ein Array von 4 Gegenständen? – wint

+0

Ja, es ist ein Array von 4 Items, jedes Item enthält AverageCost = 0; Barcode = ""; Beschreibung = "TEST ITEM 2"; InternalUnique = 2; LastCost = 0; LimitToMainRegionUnique = "-1"; Hinweise = ""; StockCategoryUnique = 0; StockCode = BBCD45785; StockGroupUnique = 0; UnitDescriptor = Einheiten; –

+0

Entschuldigung, wenn es ein bisschen chaotisch ist, in ein bisschen Crunch –

Antwort

1

an Ihrem Beispielcode der Suche, ich glaube, das Hauptproblem hier passiert, ist, dass Sie wieder mit der Die gleiche self.newItemInStock Instanz für jedes Objekt, das Sie der Liste hinzufügen.

Es wäre am besten, wenn Sie ein neues Item Objekt in der Schleife erstellen und an das Objekt List anhängen.

Verwandte Themen