此代码首先会填充UITableView,但滚动后所有标签显示为nil。 我将数据保留在CoreData中,但它不能解决问题。 我猜这个问题是UITableView 我该如何解决这个问题呢?
override func viewDidLoad() {
super.viewDidLoad()
Alamofire.request(.POST, url, parameters: nil, encoding: .URL, headers: ["username": "dsc", "password" : "cdsc"] ).responseJSON { response in
switch response.result {
case .Success(let JSON):
let response = JSON as! NSDictionary
let jsonArray = response.objectForKey("data") as! NSArray
for jsonObject in jsonArray {
let name = jsonObject.objectForKey("name") as! String
let percentage = NSNumber(double: (jsonObject.objectForKey("percentage")?.doubleValue)!)
let quantity = NSNumber(int: (jsonObject.objectForKey("quantity")?.intValue)!)
let managedObjectContext = stack.managedObjectContext
let entity = NSEntityDescription.entityForName("Product", inManagedObjectContext: managedObjectContext)
let product = Product(entity: entity!, insertIntoManagedObjectContext: managedObjectContext)
product.name = name
product.percentage = percentage
product.quantity = quantity
}
try! stack.managedObjectContext.save()
let fetchRequest = NSFetchRequest(entityName: "Product")
do {
let result = try stack.managedObjectContext.executeFetchRequest(fetchRequest)
for item in result {
self.products.append(item as! Product)
}
} catch let error as NSError {
print("Error happeend \(error.localizedDescription)")
}
dispatch_async(dispatch_get_main_queue(), {
self.tableView.reloadData()
})
case .Failure(let error):
print("Request failed with error: \(error)")
}
}
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("ProductCell", forIndexPath: indexPath) as! ProductTableViewCell
cell.productName.text = products[indexPath.row].name
cell.percentage.text = "\(products[indexPath.row].percentage as? Double )"
cell.quantity.text = "\(products[indexPath.row].quantity as? Int)"
return cell
}