2016-09-23 35 views
0

我做API要求與Alamofire,然後我得到JSON格式的響應,那麼我解析JSONNSDictionary去我想要的數據。 我得到的數據是四個不同項目的Arrays。 我想將創建領域一個新的列表,以保存這些物品 這裏是我的領域對象類:創建新領域列表和添加項目

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

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

這裏是我的代碼,我如何處理JSON響應以及我想要將數據保存在我的代碼中的位置。

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

這裏是我所得到的,當我打印4個陣列

enter image description here

+0

當您說「我得到的數據是四個不同項目的數組」。你的意思是一組4個項目? – wint

+0

是的,它是一個4個項目的數組,每個項目包含 AverageCost = 0; Barcode =「」; 說明=「測試項目2」; InternalUnique = 2; LastCost = 0; LimitToMainRegionUnique =「-1」; Notes =「」; StockCategoryUnique = 0; StockCode = BBCD45785; StockGroupUnique = 0; UnitDescriptor =單位; –

+0

對不起,如果它有點凌亂,在一點Crunch –

回答

1

看你的示例代碼,我覺得這裏發生的主要問題是,你重新使用同樣的self.newItemInStock實例爲您添加到列表中的每個對象。

最好在循環中創建一個新的Item對象,並將其追加到List對象中。