[英]two connected relationships in a realm object
我对领域还很陌生,因此我试图为REST API与存储到领域对象之间的交互找到正确的设计。 到目前为止,我有一个Animal
对象,如下所示:
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
关系,因为类型包括所有品种的列表,这意味着要检索具有相应品种名称和类型名称的动物,我必须在服务器端填充这两个属性,当我在动物对象上只需要检索Type
和Breed
的两个名称时,这将使JSON对象变得庞大。 我发现的另一种方法是只保存String
ObjectId,然后在领域数据库中按该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字符串映射Animal
,还必须包括Type
和Breed
所有内容。 但是应该对此做出妥协。
听起来Type
和Breed
是两组完全静态的数据,它们几乎完全独立于Animal
。 他们也有主键。 在所有情况下,我建议您下载所需的所有Breed
和Type
内容,并在第一次需要时将其本地保存到Realm。
之后,每当您请求Animal
,JSON字符串的内容而不是包括Breed
和Type
对象的内容,都可以简单地包括必要对象的主键。 然后,在ObjectMapper中执行映射操作时,您可以手动使用这两个键,在Realm中查询适当的对象,然后将它们完全本地链接到磁盘上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.