私はむしろレルムに直面しています。私はREST APIとレルムオブジェクトに格納する間のやりとりに適したデザインを見つけようとしています。これまでのところ、私は以下のように見えるAnimal
オブジェクトを持っている:realmオブジェクト内に2つの接続関係があります
class Animal: Object, Mappable {
dynamic var id = ""
dynamic var userId = ""
dynamic var name = ""
dynamic var gender = ""
dynamic var breed: Breed?
dynamic var type: Type?
//extra
var mainPhotoIndex = 0
override static func primaryKey() -> String? {
return "id"
}
required convenience init?(map: Map) {
self.init()
}
}
問題はタイプが意味するすべての品種のリストで構成されているので、私は私がType
とBreed
関係を扱うことができるかわからないということですが対応する品種名と型名を持つ動物を取得するためには、サーバー側でこれらの2つのプロパティを設定する必要があります。これは、動物オブジェクトの上でJSONオブジェクトを大きくすると、Type
の2つの名前Breed
。私が見つけたもう1つのアプローチは、String
ObjectIdを保存してから、領域IDデータベースでそのIDをフィルタリングすることですが、これがベストプラクティスであるかどうかはわかりません。だから私はここでサーバー側を渡す必要があります、私はどのように私の動物の領域オブジェクトを設計する必要がありますか?
タイプ
class Type: Object, Mappable {
dynamic var id = ""
dynamic var name = ""
var breeds = List<Breed>()
override static func primaryKey() -> String? {
return "id"
}
required convenience init?(map: Map) {
self.init()
}
}
品種
class Breed: Object, Mappable {
dynamic var id = ""
dynamic var name = ""
override static func primaryKey() -> String? {
return "id"
}
required convenience init?(map: Map) {
self.init()
}
}
あなたのクラス定義は正しいです。巨大なJSONの問題を解決するには、サーバーとの間で投稿/取得するときに、TypeとBreedにIDを渡すだけです。 すべてのタイプと品種は、あなたの/ typesエンドポイントからローカルデータベースに保存されているので、特定の動物を作成するときにそれらをIDで取得し、動物のプロパティとして割り当てることができます。 –
私は、IDを文字列として保存することが領域では良い練習であることを確信していないと考えました –
なぜ文字列として保存するのですか?整数は正しい選択肢になる可能性があります –