我正在使用以下内容根据文本字段totalAmountInc更新金额VAT
func textFieldDidEndEditing(textField: UITextField) {
if totalAmountInc != nil {
let tmpVAT = Double(totalAmountInc.text!)
let valueVAT = getVATValue(tmpVAT!)
//textfield2
amountVAT.text = String(valueVAT)
}
}
但现在该值无法保存(使用核心数据)?
当我直接输入增值税金额时,它将被保存。
保存过程如下
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()
}
最佳答案
您需要检查您尝试保存到核心数据的变量包含什么内容。设置断点,看看哪里出错了。
在您的代码示例中,存在许多问题。例如,在 textFieldDidEndEditing
中,相关文本字段作为 textField
变量传递 - 没有理由引用您的实例变量并检查 nil
。 (也许您打算检查 text
属性是否为 nil
?最好将其初始化为 ""
而不必费心进行此检查。您没有解释 getVATValue
的作用,大概只是计算百分比。对于这样的小事来说,函数似乎有点过分了(而且它使您的代码可读性较差)。
检查 Double(textField.text!)
的结果是什么。您可能会发现 Double 值的初始化存在一些问题。
此外,将值放入增值税文本字段,然后在保存时将其重新转换为数字以保存在核心数据中是没有意义的。您正在使用 UI 元素来保存值(以不方便的格式)。相反,您应该使用 Double 类型的变量来保存所需的值。
关于ios - 保存由 textFieldDidEndEditing 更改的文本字段值不会保存在核心数据中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32401276/