2017-09-19 3 views
0

Ich versuche in CoreData eine Objektliste auf moveRowAt zu speichern. Ich speichere meine Daten in einem Singleton und es ist gut geordnet, aber wenn ich auf Core Data update, wird es nie gespeichert und die Reihenfolge ist falsch.Core Data Update Ergebniswerte

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

zum ersten Mal es gut funktioniert, aber nie gespeichert, geben Sie uns wieder und ich bewege das neue erste Element auf die letzte Position und das ist, was

geschieht

its like i haven't done the first movement

Einsparung in CoreData denke ich würde Solv Das Problem, aber jede Hilfe oder Lösung wäre großartig.

Antwort

1

Ich weiß nicht genau, was Sie tun möchten, aber nebenbei können Sie Ihr Array leicht mit bestellen.

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

Vielen Dank für die Bestellung Lösung, was ich tun möchte ich die neuen Ergebnisse in Zusammenhang geordnet zu speichern und meine Daten zu halten, ich weiß nicht, ob ich die Ergebnisse Array geholt zu ändern oder ich habe zu tun etwas anderes, aber ich kann nicht in Core Data speichern –

+0

Bitte überprüfen Sie diesen Beitrag. https://stackoverflow.com/questions/11600571/what-is-the-best-way-to-sort-a-core-data-entity – Alexkater