2017-01-10 18 views
1

私はテーブルを作成しました:キー、値。コアデータが存在する場合、既存のオブジェクトを更新します

いくつかのパラメータを保存するだけです。キーが存在しない場合は挿入しますが、存在する場合は値を更新します。キーが既にそれがでミリアンペアテーブル内の別のインサートを行う存在する私の場合は

、キー皆無に等しい:それは上のシミュレータ上で同様に動作しなくので、なぜ

public static func insertValueWithKey(context: NSManagedObjectContext, key:String, value:String){ 

    let fetchRequest : NSFetchRequest<NSFetchRequestResult> 

    if #available(iOS 10.0, *) { 
     fetchRequest = Params.fetchRequest() 
    } else { 
     fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Params") 
    } 

    let predicate = NSPredicate(format: "key=%@", key) 
    fetchRequest.predicate = predicate 

    do { 
     let results = try context.fetch(fetchRequest) 

     if(results.count != 0){ 

      let paramsDescription = NSEntityDescription.entity(forEntityName: "Params", in: context) 


      let params = NSManagedObject(entity: paramsDescription!, insertInto: context) as! Params 


      params.value = value 

      do { 
       try context.save() 
      } catch let error as NSError { 
       print ("Error first demande insertion \(error)") 
      } 

     } else if (results.count == 0) { 

      let params = NSEntityDescription.insertNewObject(forEntityName: "Params", into: context) as! Params 

      params.key = key 
      params.value = value 

      context.insert(params) 

      do { 
       try context.save() 
      } catch let error as NSError { 
       print ("Error first demande insertion \(error)") 
      } 
     } 


    } catch { 
     let fetchError = error as NSError 
     print(fetchError) 
    } 

} 

私は理解していませんデバイス...

+0

と同じです。お使いのデバイスで使用できるiOSのバージョンは? –

+0

@SagarChauhan 9.3.2の最新バージョンとそれ以前のバージョンのデバイスでテストしています – Ben

+0

あなたの情報のために、このコードはあなたのiOSバージョンが10.0未満で実行されることはありません。 'fetchRequest = Params.fetchRequest() }' –

答えて

0

置き換える:

let params = NSManagedObject(entity: paramsDescription!, insertInto: context) as! Params 

let params = results.last as! Params 

NSManagedObject(entity: insertInto:)は機能的にはNSEntityDescription.insertNewObject(forEntityName:into:)

+0

本当にありがとう、私はどこでもこれを見つけることができません! – Ben

関連する問題