2016-12-16 12 views
0

コアデータをIntに保存しようとしていて、苦労しています。Intをコアデータに保存する

私は約2000レコードのSQLiteを持つ配列を持っており、すべてがtableviewにリストされています。レコードの1つが選択されると、そのアイテムの詳細が表示された「speciesDetailViewController」に移動します。

現在表示されているものはすべて編集できません。

私はメモを追加する機能と、フィールドの1つを変更するオプションを追加しています。

私は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に設定されています。

私はまた、私はInt64型に、同じ結果をすべて設定することを試みた

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

を試みた、上記を試してみました。

私は他の投稿を見ましたが、すべての提案は私が試したものと同じです。

また、エラーは発生していません。私は死の赤い線を得るだけです。

私はブレークポイントを設定してそれに従います。そして、それがintラインに当たったとき、それは細部なしで赤い線になっています。

更新: "User Scalar Type"が何であるか分かりませんが、私はチェックを外して、以下に変更したオートコレクトはエラーなしで実行されますが、nilは保存されます。私はプリント(specieId)を実行し、正しい整数を出力します。

speciesDetailData.speciesID = Int32(specieId) as NSNumber? 

答えて

0

明らかにScalarタイプはSwift 3への移行を支援するために使用します。このボックスのチェックを外すと、正常に実行されたようです。私は回線のバックエンドでNSNumberとして追加する必要がありましたが、動作します。

関連する問題