2016-09-04 28 views
0

我想建立一堆数据的境界。这不会是一个问题,但我已经遇到了困难 - 我们应该说经验上的差距。领域创建和人口序列

创建一条记录很好。但是,该记录的其中一个字段是另一个表中记录的数组(<List>)。现在我的两个问题是:

  1. Realm是否支持?对象的列表或数组作为记录的一个字段......在这里回答不会让我回答我的问题 - 我只需要制作一组“主键”,并在我需要。如果答案是肯定的,请继续问问题2.
  2. 我该如何着手创建这些列表,记住这些表格可能会在比当前时间晚一秒的时间创建,这意味着这些记录不会还不存在,因此不能被添加到列表...

例子:

class baseRLMObject: Object { 
// Creates an id used as the primary key. Also includes a few methods. 
} 
class Film: baseRLMObject { 
    var name: String! 
    var episodeId: Int! 
    var characters = List<Character>() 
} 
class Character: baseRLMObject { 
    var name: String! 
    var films = List<Film>() 
} 

看到所有的电影对象如何需要在人物对象之前,首先创建?否则,我可以尝试添加一个尚不存在的电影,然后它会崩溃和烧伤:(原因我想尝试找到更好的方法是,我正在处理10个表格,几百条记录和可变的连接速度。因为他们都遭受同样的问题(相互连接),无论我从哪开始,它都不会工作......

谢谢:)

+0

尝试阅读[这](http://stackoverflow.com/questions/34276659/realm-swift-many-to-many - 关系),看看它是否可以帮助你,在Realm中的多对多关系可以用于'反向关系' – Tj3n

+0

谢谢@ Tj3n ..虽然这教会了我一些东西,那p在创建列表时,仍然具有可用对象的好处。我遇到了一个对象尝试向列表添加另一个对象的问题 - 但是它试图添加的对象尚未创建。然后怎样呢?哈哈 –

+0

我真的不明白你的问题,你完全可以在没有一些属性的情况下创建它,如果我理解正确,你的API返回电影/字符名称列表,然后创建没有其他属性的相应电影/字符 – Tj3n

回答

0

如前所述,对于尚未创建的对象,你应该创建只有主键空对象,然后重新取,并呼吁

对于许多到另一个网络请求后增值 - 许多的关系,你可以使用域的Inverse Relationships创建这些对象之间的链接,如:

class Character: baseRLMObject { 
    var name: String! 
    var films = LinkingObjects(fromType: Film.self, property: "characters") 
} 
0

就像是在评论正在讨论,你应该能够使用领域的inverse relationships功能最这个过程的自动化:

class baseRLMObject: Object { 
// Creates an id used as the primary key. Also includes a few methods. 
} 
class Film: baseRLMObject { 
    var name: String! 
    var episodeId: Int! 
    var characters = List<Character>() 
} 
class Character: baseRLMObject { 
    var name: String! 
    let films = LinkingObjects(fromType: Film.self, property: "characters") 
} 

当致电character.films时,将返回一个List所有Film对象,其characters属性包含该对象。

这比试图在对象类型之间维护两个单独的关系列表容易很多并且没有错误。