我正在使用以下内容根据textfield totalAmountInc
更新amountVATfunc 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()
}
答案 0 :(得分:0)
您需要检查要保存到Core Data的变量包含的内容。设置一个断点,看看你犯了哪个错误。
在您的代码示例中,存在许多问题。例如,在textFieldDidEndEditing
中,相关文本字段作为textField
变量传递 - 没有理由引用您的实例变量并检查nil
。 (也许您打算检查text
属性是否为nil
?最好将其初始化为""
而不用担心此检查。您没有解释getVATValue
确实只是计算一个百分比。一个函数似乎有些过分琐碎(并且它使你的代码不那么可读)。
检查Double(textField.text!)
的结果是什么。您可能会发现Double值的初始化存在问题。
此外,将值放入VAT文本字段中是没有意义的,然后在保存时将其重新转换为数字以保存在Core Data中。您正在使用UI元素来保存值(以不方便的格式)。相反,您应该使用Double
类型的变量来保存您需要的值。