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

标签 ios swift core-data

我正在使用以下内容根据文本字段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/

相关文章:

ios - 如何在用户位置上居中 map IOS 9 SWIFT

Swift:DatePicker-Timer?

ios - 选择允许外部存储时,iPhone 核心数据迁移导致二进制数据丢失

ios - fatal error : 'Pixate/PXVirtualControl.h' file not found

ios - 布局 : How to use property in visual format

swift - iOS - 将字符串转换为 double

ios - Simperium 复制现有记录

ios - 如何从 UITableView swift 4 中删除一行,其中使用 CoreData 存储数据?

ios - Xcode 7 归档失败

android - 如何在android中将自定义过滤器应用于相机流?