2016-11-11 5 views
0

Ich habe ein CoreData-Objekt namens Game und es hat eine Beziehung namens playedList. Ich wollte, dass es ein Wörterbuch von Daten enthält. Dinge, über die ich mir nicht sicher bin.Coredata Beziehung, speichern Wörterbuch

1) Muss eine Beziehung eine NSSet sein? 2) Wie würde ich ein Dictionary [String: Int] oder [Player: Int] in dieser Beziehung speichern?

Ich hatte versucht, die Beziehung zu NSData und Beziehung

game.playedList = try NSJSONSerialization.dataWithJSONObject(myDictionary, options: []) 
    } catch { 
     print("JSON serialization failed: \(error)") 
    } 

Unzulässige Werttyp verwenden zu ändern viele zu:

ich dies ein wenig unsicher bin, wie es ist Mein erstes Mal mit CoreData

Antwort

1

Die Beziehung einer CoreData-Entität muss zu einer oder mehreren anderen CoreData-Entitäten gehören. Sie können keine Beziehung zwischen einer Entity und einem Nicht-CoreData-Objekt wie einem Dictionary definieren.

Sie können eine neue Entität mit Attributen definieren, um jeden Schlüssel in diesem Wörterbuch zu speichern (wenn sie vorhersehbar sind).

Alternativ könnten Sie Ihre Wörterbuch als Datenattribut speichern eine ValueTransformer mit (Storing UIColor object in Core Data und ähnlich sehen)

+0

Ok, also in meiner Situation, was denken Sie, der beste Weg ist, ein Wörterbuch der speichern, die gespielt und die Zeit, die sie gespielt haben? Was soll ich sagen, sollte ich meiner Spiel-Entity ein neues Attribut hinzufügen und es als transformierbar festlegen und es dann als NSData speichern? – Jonnny

+0

Wenn Sie vorhersagbare Daten speichern, klingt es so, als ob Ihnen ein Entitätstyp fehlt. In deinem Fall ist das ein 'Replay' oder' GameRecord', der 'duration'- und' playerName'-Attribute enthält oder sogar eine andere Beziehung zu einer 'Player'-Einheit hat. – Jonah

+0

Nun, ich habe eine "Spiel" -Einheit, dieses Spiel gehört zu einem "Team", "Spieler" gehören zu "Team". Ich möchte eine Möglichkeit haben zu speichern, welche Spieler in welchen Spielen gespielt haben und wie viel sie gespielt haben. Ich weiß, dass ich ein "NSSet" von Spielern haben könnte, die ich gerade gespielt habe. Aber nicht sicher, wie man am besten speichert, wie viele Minuten jeder dieser Spieler gespielt hat? (Bedenkt, dass manche Spieler nicht in jedem Spiel spielen können, wenn sie verletzt sind usw.). Was denken Sie? – Jonnny

Verwandte Themen