我在我的应用中使用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)
}
答案 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
}
}