将Int保存到核心数据

时间:2016-12-16 06:19:52

标签: core-data swift3 ios10

我正在尝试将Int保存到核心数据并且正在努力。

我有一个带有大约2000条记录的SQLite的数组,所有这些都列在tableview上。当选择其中一个记录时,它会转到" speciesDetailViewController"是否显示该项目的详细信息。

当前显示的所有内容都不可编辑。

我添加了用户添加备注的功能以及更改其中一个字段的选项。

由于我没有使用SQLite(雇用某人)的经验,因此较小的更改会保存在CoreData中。

除了保存Int。

之外,我已经全部工作了

以下是其他细节。

var specieId: Int = -1
var speciesDetailData : SpeciesDetailData?
lazy var coreDataStack = CoreDataStack()

以下是使用的保存功能。

func saveResults () {


    if let speciesDetailData = speciesDetailData {

        let x = Int32(self.specieId)

        speciesDetailData.commonName = ckCommonNameTextField.text!
        speciesDetailData.commonForeignName = ckCommonForeignNameTextField.text!.isEmpty ? "" : ckCommonForeignNameTextField.text
        speciesDetailData.speciesName = speciesLabel.text!
        speciesDetailData.speciesID = x
        speciesDetailData.speciesNote = ckNotesTextView.text!.isEmpty ? "" : ckNotesTextView.text

    } else if speciesDetailData == nil {

        if let savedData = NSEntityDescription.entity(forEntityName: "SpeciesDetailData", in: coreDataStack.managedObjectContext1) {

            let x = Int32(self.specieId)

            let speciesDetailData = SpeciesDetailData(entity: savedData, insertInto: coreDataStack.managedObjectContext1)

            print (specieId)

            speciesDetailData.commonName = ckCommonNameTextField.text!.isEmpty ? "" : ckCommonNameTextField.text
            speciesDetailData.commonForeignName = ckCommonForeignNameTextField.text!.isEmpty ? "" : ckCommonForeignNameTextField.text
            speciesDetailData.speciesName = speciesLabel.text!
            speciesDetailData.speciesID = x
            speciesDetailData.speciesNote = ckNotesTextView.text!.isEmpty ? "" : ckNotesTextView.text

        }
    }

    coreDataStack.saveMainContext()

实体是SpeciesDetailData,speciesID当前设置为Int32。

我已经尝试了上述内容,我也尝试了

speciesDetailData.speciesID = Int32(self.specieId)
speciesDetailData.speciesID = Int32(specieId)

我试图将所有设置为Int64,结果相同。

我看过其他帖子,但所有建议都和我尝试的一样。

另外,我没有收到错误。我只得到死亡的红线。

我设置了一个断点并跟进它,当它到达int线时,它只是红色,没有任何细节。

更新: 我不知道"用户标量类型"是,但我取消选中它并自动更正将其更改为下面现在运行没有错误但保存为零。我运行了print(specieId)并打印出正确的整数。

 speciesDetailData.speciesID = Int32(specieId) as NSNumber?

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

显然,使用Scalar类型是为了协助迁移到Swift 3.当我取消选中此框时,它似乎运行正常。我最后需要在该行的后端添加NSNumber,但它可以工作。