表视图的核心数据重复两行

时间:2015-07-04 13:44:36

标签: ios swift core-data

尝试一些核心数据,几乎在那里但不完全。使用两个UILabels获取此简单表视图。

问题是这个

enter image description here

一行行下面的abc预期行为为123

保存数据

var data = [NSManagedObject]()

   func saveData(rowData: String) {

        //1 Get record
        let appDelegate =  UIApplication.sharedApplication().delegate as! AppDelegate

        let managedContext = appDelegate.managedObjectContext!

        //Entity
        let entity =  NSEntityDescription.entityForName("Tasks", inManagedObjectContext: managedContext)

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


        //3
        person.setValue(rowData, forKey: "engineerName")
        person.setValue(rowData, forKey: "projectDescription")


        //4
        var error: NSError?
        if !managedContext.save(&error) {
            println("Could not save \(error), \(error?.userInfo)")
        }
        //5
        data.append(person)


    }




    deinit {

        self.saveData(engineerField.text)
        self.saveData(currentProjectField.text)


    }

将其加载到表格视图

var data = [NSManagedObject]()

   func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

            return data.count

    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

            var cell = self.tableView.dequeueReusableCellWithIdentifier("CustomRow") as! CustomRow

            //Get record from core data
            let person = data[indexPath.row]
             println("Row Data = \(person)")

            cell.nameLabel.text = person.valueForKey("engineerName") as? String
            cell.projectLabel.text = person.valueForKey("projectDescription") as? String


        return cell
    }

核心数据

enter image description here

2 个答案:

答案 0 :(得分:2)

saveData方法中,您为engineerNameprojectDescription NOT 保存了不同数据的相同数据。您需要传入两个不同的字符串(例如engineerNameStringprojectDescriptionString)并将不同的字符串保存在您的人员管理对象中。

基于代码的示例代码:

func saveData(engineerNameString: String, projectDescriptionString: String) {

    //1 Get record
    let appDelegate =  UIApplication.sharedApplication().delegate as! AppDelegate
    let managedContext = appDelegate.managedObjectContext!

    //Entity
    let entity =  NSEntityDescription.entityForName("Tasks", inManagedObjectContext: managedContext)
    let person = NSManagedObject(entity: entity!, insertIntoManagedObjectContext:managedContext)

    //3
    person.setValue(engineerNameString, forKey: "engineerName")
    person.setValue(projectDescriptionString, forKey: "projectDescription")

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

    //5
    data.append(person)
}

答案 1 :(得分:0)

究竟应该发生什么。视觉重复是因为您设置了cell.nameLabel.textcell.projectLabel.text,并且由于内部engineerNameprojectDescription包含相同的值,因此两个标签都显示相同的数据。

仍然只有两个单元格,都显示相关数据。

您必须为engineerNameprojectDescription存储不同的数据 - 您会发现一切都按预期工作。