保存textFieldDidEndEditing更改的文本字段值不会保存在核心数据中?

时间:2015-09-04 15:07:04

标签: ios swift core-data

我正在使用以下内容根据textfield totalAmountInc

更新amountVAT
func textFieldDidEndEditing(textField: UITextField) {
    if totalAmountInc != nil {
        let tmpVAT = Double(totalAmountInc.text!)
        let valueVAT = getVATValue(tmpVAT!)

        //textfield2
        amountVAT.text = String(valueVAT)
    }
}

但现在价值不会保存(使用核心数据)?

当我直接输入amountVAT值时,它将被保存。

保存过程如

func newItem(){

    let context = self.context
    let ent = NSEntityDescription.entityForName("List", inManagedObjectContext: context)


    let nItem = List(entity: ent!, insertIntoManagedObjectContext: context)
    let numberFormatter = NSNumberFormatter()

    nItem.amountVAT = numberFormatter.numberFromString(amountVAT.text!)
    .....more values
    nItem.invoiceImage = UIImagePNGRepresentation(imageHolder.image!)

    do {
     try context.save()
    } catch {
        print(error)
    }
}
func saveValues(sender: AnyObject) {

        if nItem != nil {
            editItem()
        } else {
            newItem()
        }

        dismissVC()
    }

1 个答案:

答案 0 :(得分:0)

您需要检查要保存到Core Data的变量包含的内容。设置一个断点,看看你犯了哪个错误。

在您的代码示例中,存在许多问题。例如,在textFieldDidEndEditing中,相关文本字段作为textField变量传递 - 没有理由引用您的实例变量并检查nil。 (也许您打算检查text属性是否为nil?最好将其初始化为""而不用担心此检查。您没有解释getVATValue确实只是计算一个百分比。一个函数似乎有些过分琐碎(并且它使你的代码不那么可读)。

检查Double(textField.text!)的结果是什么。您可能会发现Double值的初始化存在问题。

此外,将值放入VAT文本字段中是没有意义的,然后在保存时将其重新转换为数字以保存在Core Data中。您正在使用UI元素来保存值(以不方便的格式)。相反,您应该使用Double类型的变量来保存您需要的值。