2015-08-29 4 views
1

Я думаю, что это просто, но я не могу найти ответ для меня. У меня две таблицы. Контакты и сообщения. Как это:Как получить отношения из CoreData в swift?

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

CoreData - это не база данных. Вам не нужно присоединяться к каким-либо таблицам (нет таблиц).

Вы также не должны хранить внешние ключи.

После того, как у вас есть message, вы можете получить массив contacts, используя message.contacts. Для этого вам не нужно выполнять какие-либо запросы на выборку. (Кроме того, чтобы получить сообщение в первую очередь).

Кроме того, ваши объекты должны иметь особые имена (Contact не Contacts).

Если в ваших сообщениях есть отправитель и получатель, то создайте два отношения, один из которых называется sender, а другой - receiver и подключите их к объекту Contact.

Я бы рекомендовал инвестировать в основную книгу CoreData. Или есть несколько очень хороших обучающих онлайн. Вы бы сэкономили время на обучение правильному использованию CoreData.

Смежные вопросы