Как исправить предикат свойства CoreData Fetched для слабой связи чата и сообщений?

У меня простой чат с чатами общения и сообщениями.

Объект чата имеет свойство chatId - введите Integer

Объект сообщения имеет свойство chatId - введите Integer

В объекте чата я создал выбранное свойство (messagesFP) с простым (я думаю) предикатом

chatId == $FETCH_SOURCE.chatId

введите описание изображения здесь

У меня есть чат с Id = 1 и сообщения, в которых свойство chatId = 1.

Но messagesFP - возвращает пустой массив.

Если я изменяю предикат на

chatId == 1

Таким образом, сообщенияFP возвращают правильные сообщения.

Итак, как написать правильный предикат для извлечения сообщений для текущего чата?

Ответ 1

Если $FETCH_SOURCE указывает на NSManagedObjectID на вашем конце, вы можете попробовать использовать следующую категорию, чтобы исправить это.

Вот отличная ссылка в Руководство по программированию основных данных.

Это один из тех удобных методов, которые мы должны предоставить разработчикам на нашей стороне. В своем проекте замените some_moc на контекст управляемого объекта.

@implementation NSManagedObjectID (FetchSource)

- (id) valueForUndefinedKey:(NSString *)key {

    //Attempt to unwrap the underlying object from the moc
    NSManagedObject *mocObject = [some_moc objectWithID:self];

    return [object valueForKey:key];
}

@end

Я надеюсь, что это сработает для вас!