2015-08-18 3 views
0

Я использую основные данные в своем приложении. Когда я запускаю свое приложение, если включено подключение к Интернету, я получаю данные из службы, удаляю все данные и добавляю новые. Но каждый раз, когда я запускаю свое приложение в автономном режиме, я вижу пустую ячейку в моем представлении таблицы. Я не знаю причину, но когда я получаю данные из службы, например, если есть 3 элемента, они добавляют 3 и плюс один пустой. Вот почему я вижу одну (иногда еще одну) пустую ячейку и 3 ячейки с элементами в моем представлении таблицы. Вот мой код нижеПустая ячейка в swift

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

Этот пустой клетки вы видите, это так называемая tableFooterView. Вы можете удалить эту пустую ячейку с помощью:

tableView.tableFooterView = UIView(frame: CGRectZero) 

Кроме того, я не уверен, что это также проблема, у вас есть, но в данный момент вы удалите данные каждый раз, когда вы вызова метода product. Вы действительно уверены, что хотите это сделать, а не только, если сможете получить более новые данные?

0
for index in items { 
    if (index.valueForKey("productName") == nil) { 
     items.removeAtIndex(count) 
    } else { 
     count = count + 1 
    } 
} 
Смежные вопросы