![](/img/trans.png)
[英]Textfield value not being updated in time for save textFieldDidEndEditing
[英]Saving textfield value altered by textFieldDidEndEditing won't save in core data?
我正在使用以下内容基于文本字段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()
}
您需要检查要保存到Core Data中的变量。 设置一个断点,看看您在哪里出错。
在您的代码示例中,存在许多问题。 例如,在textFieldDidEndEditing
中,有问题的文本字段作为textField
变量传递-没有理由引用您的实例变量并检查nil
。 (也许您打算检查text
属性是否为nil
?最好将其初始化为""
而不用为此检查打扰。您没有解释getVATValue
作用,大概只是计算一个百分比。对于一些琐碎的事情,函数似乎过大了。那样(这会使您的代码可读性降低)。
检查Double(textField.text!)
的结果是什么。 您可能会发现Double值的初始化存在问题。
同样,将值放入VAT文本字段中然后在保存时将其重新转换为数字以保存在Core Data中也没有意义。 您正在使用UI元素保存值(格式不方便)。 相反,您应该使用Double
类型的变量来保存所需的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.