快速空单元格

时间:2015-08-18 06:08:42

标签: ios swift core-data

我在我的应用中使用Core Data。当我运行我的应用程序如果启用了互联网连接,我从服务获取数据,删除所有数据并添加新数据。但每当我在离线模式下运行我的应用程序时,我在表格视图中看到空单元格。我不知道原因,但是当我从服务中获取数据时,例如,如果有3个项目则添加3个加一个空。这就是为什么我在表视图中看到一个(有时是一个)空单元格和3个单元格的单元格。这是我的代码

func product (token : NSString, code : NSString) {

    let manager = AFHTTPRequestOperationManager()
    var params : Dictionary = ["token" : token, "code" : code]
    self.deleteAllInCoreData()
    manager.GET(url, parameters: params, success: { (operation: AFHTTPRequestOperation!, responseObject) in

        println("JSON: " + responseObject.description)

        var response = responseObject.objectForKey("response") as? NSString

        if response == "true" {

            var responseDict = responseObject.objectForKey("products") as! NSArray

            for (index, value) in enumerate(responseDict) {

                var item = responseDict[index] as! NSDictionary
                var id = item.objectForKey("id") as! NSString
                var status = item.objectForKey("status") as! NSString
                var productName = item.objectForKey("product_name") as! NSString

                self.saveItem(productName as! String, itemStatus: status.boolValue, itemId: id as! String, action: "0")

            }
         self.tableView.reloadData()

    }, failure: { (operation: AFHTTPRequestOperation!, error: NSError!) in

        println("Error: " + error.localizedDescription)

    })

}

func saveItem(itemName: String, itemStatus: Bool, itemId: String, action : String)
{
    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

    let managedContext = appDelegate.managedObjectContext!

    let entity =  NSEntityDescription.entityForName("Items",
        inManagedObjectContext:
        managedContext)

    let itemObject = NSManagedObject(entity: entity!, insertIntoManagedObjectContext:managedContext)

    itemObject.setValue(itemName, forKey: "productName")
    itemObject.setValue(itemStatus, forKey: "productStatus")
    itemObject.setValue(action, forKey: "action")
    itemObject.setValue(itemId, forKey: "productId")

    var error: NSError?
    if !managedContext.save(&error) {
        println("Could not save \(error), \(error?.userInfo)")
    }

    items.append(itemObject)
}

2 个答案:

答案 0 :(得分:0)

您看到的这个空单元格是一个所谓的tableFooterView。 您可以使用以下方法删除此空单元格:

 var container = document.getElementsByClassName('selected_area');
 for(var i in container) {
      Ps.initialize(container[i]);
 }

此外,我不确定这是否也是您的问题,但是每次调用tableView.tableFooterView = UIView(frame: CGRectZero) 方法时都会删除数据。你真的确定要这样做,而不仅仅是你能获得更新的数据吗?

答案 1 :(得分:0)

for index in items {
    if (index.valueForKey("productName") == nil) {
        items.removeAtIndex(count)
    } else {
        count = count + 1
    }
}