为什么UITableView在滚动后显示为nil

时间:2016-08-14 06:11:35

标签: ios swift uitableview

此代码首先会填充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
}

0 个答案:

没有答案