2017-09-19 5 views
0

moveRowAtのオブジェクトリストをcoreDataに保存しようとしています。私はシングルトンで自分のデータを保存していますが、順序は整っていますが、コアデータを更新すると保存されず、順序が間違っています。コアデータの更新結果の値

This is my list, I moved first item to 4 positionSingleton ordered

func changeKrakenPosition(source: Int, destiny: Int){ 

    let context = appDelegate.persistentContainer.viewContext 
    do { 
     var results = try context.fetch(fetchRequest) 
     var source = source 
     var destiny = destiny 
     var destinyItem = results[destiny] 
     var sourceItem = results[source] 

     if source < destiny { 
      var dif = destiny - source 
      for i in 0...dif { 
       if i != dif { 
        var krakenCoreDataToMove = results[source+1] 
        results[source] = krakenCoreDataToMove 
        source += 1 
       } else { 
        results[source] = destinyItem 
       } 
      } 
      results[destiny] = sourceItem 
     } else if destiny < source { 
      var dif = source - destiny 
      for i in 0...dif { 
       if i != dif{ 
        var krakenCoreDataToMove = results[source-1] 
        results[source] = krakenCoreDataToMove 
        source -= 1 
       } else { 
        results[source] = destinyItem 
       } 
      } 
      results[destiny] = sourceItem 
     } else { 
      //Moved to same position 
     } 

     var resultKra = results as! [Kraken] 
     for res in resultKra { 
      print("name: \(res.name) age \(res.age)") 
     } 

     do { 
      try context.save() 
     }catch{ 
      //Handle Error 
     } 

    } catch { 
     print("Error with request: \(error)") 
    } 

} 

first time ordering Core Data

それがうまく動作しますが、保存されません初めて、私は再び入り、私は最後の位置に新しい最初の項目を移動し、これは

を何が起こるかであります

its like i haven't done the first movement

CoreDataで保存すると思います。solv問題はありますが、どんな助けや解決策も素晴らしいでしょう。

答えて

1

私はあなたが何をしたいのか正確にはわかりませんが、あなたの配列は簡単に注文できます。オーダーソリューションの

struct CustomObject{ 
    let i: Int 
    let j: String 
} 

var array: [CustomObject] = [ 
    CustomObject(i: 1, j: "1"), 
    CustomObject(i: 0, j: "0"), 
    CustomObject(i: 3, j: "3"), 
          ] 

let newArray = array.sorted { (first, second) -> Bool in 
    first.i < second.i 
} 
+0

おかげで、私はコンテキストに注文した新しい結果を保存し、私がフェッチされた結果の配列を変更する必要があれば、私は知らない私のデータを保つために何をしたいか、何をしなければなりません他の何かが私はコアデータに保存することはできません –

+0

ください、この記事を確認してください。 https://stackoverflow.com/questions/11600571/what-is-the-best-way-to-sort-a-core-data-entity – Alexkater

関連する問題