如何在swift中获取CoreData的关系?

时间:2015-08-29 13:40:08

标签: swift swift2

我认为这很简单,但我找不到答案。我有两张桌子。联系人和消息。像这样:

enter image description here

我的关系是联系人

enter image description here

并在消息

enter image description here enter image description here

我需要使用SQL:SELECT contacts.nickName, messages.id, messages.message FROM messages JOIN contacts.ccNumber = messages.senderCcNumber

我的代码现在从消息中获取所有数据,但我不知道如何将表联系人加入此提取。

let appDel: AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
let context: NSManagedObjectContext = appDel.managedObjectContext
let request: NSFetchRequest = NSFetchRequest(entityName: "Messages")

request.returnsObjectsAsFaults = false
request.predicate = NSPredicate(format: "senderCcNumber = %@", argumentArray: ["\(senderID)"] )
request.sortDescriptors = [NSSortDescriptor(key: "added", ascending: true)]
do { resultsMessagesList = try context.executeFetchRequest(request) } catch {}
print(resultsMessagesList)
return resultsMessagesList

有人能给我一个暗示吗?

1 个答案:

答案 0 :(得分:1)

CoreData不是数据库。您不需要连接任何表(没有表)。

您也不应该存储任何外键。

获得message后,您可以使用contacts获取message.contacts数组。您无需执行任何获取请求即可执行此操作。 (除了首先得到消息)。

此外,您的实体应具有单数名称(Contact而非Contacts)。

如果您的邮件有发件人和收件人,则创建两个名为sender的关系,另一个称为receiver,并将它们连接到Contact实体。

我建议您投资CoreData基础知识书。或者有一些非常好的在线教程。您可以节省自己学习正确使用CoreData的时间。