Если я правильно вас понимаю, вы хотите, чтобы Транзакция была связана с Аккаунтом посредством двух отношений: debitAccount
и creditAccount
, да? И вы задаетесь вопросом о создании обратных отношений.
Короче говоря, отношения могут быть только противоположными другим отношениям. Таким образом, вы не сможете создать отношения, скажем, transactions
, которые обратны как debitAccount
, так и creditAccount
. Вместо этого вам придется создать две взаимосвязи, например debitTransactions
и creditTransactions
(я уверен, что вы придумаете более подходящие имена для них ...)
Теперь, поскольку отношения моделируются как наборы (в частности, NSSet
s), вы можете объединить отношения creditTransactions
и debitTransactions
для конкретной Учетной записи, чтобы получить все транзакции, в которых участвует учетная запись.
(возможно, лучшая) альтернатива состояла бы в том, чтобы ввести промежуточную сущность с именем, подобным TransactionAccount
, которое имеет отношение «один к одному» с Account
и Transaction
, а также с атрибутом, например accountRole
это идентифицирует счет как дебетовый или кредитный счет относительно этой конкретной транзакции. Вы бы создали отношения типа «обратный ко многим» для Transaction
и Account
с именем, например transactionAccounts
. Таким образом, вы могли бы написать что-то вроде этого:
[account valueForKeyPath:@"transactionAccounts.transaction"]
чтобы получить все транзакции для определенного аккаунта. Вы можете использовать NSPredicate
для фильтрации набора только для транзакций, в которых счет был дебетовым / кредитным счетом.