Базовые данные: «например, тип получателя не объявляет метод с селектором ...» - PullRequest
0 голосов
/ 16 декабря 2011

Я пытаюсь преобразовать проект Xcode 3 (iOS 4.3) в ARC в Xcode 4.2 (iOs 5), но когда я пытаюсь предварительно проверить проект, я получаю кучу разных ошибок, которые мне нужно исправить прежде чем двигаться дальше. Одной из таких ошибок является следующее сообщение:

* "тип получателя" Назначение 'для сообщения экземпляра не объявляет метод с селектором' gradable '*,

, где Назначение - это управляемый объект базовых данных, а - gradable - это свойство ...

Вот строка, где я получаю сообщение об ошибке:

if ([[[[assignment gradable]description]description] isEqualToString:@"true"]) {

А вот для лучшего понимания:

for(int i = 0; i < [assignmentArrays count]; i++) {
        for (Assignment* assignment in [assignmentArrays objectAtIndex:i]) {
            if ([[[[assignment gradable]description]description] isEqualToString:@"true"]) {
                [[gradableAssignmentsArray objectAtIndex:i] addObject:assignment];
            }
        }
    }

[assignmentArrays release];

Итак, если я правильно понимаю, мне нужно объявить метод, чтобы я мог использовать его здесь ... но, будучи основным объектом данных, я немного запутался в этом ... Я провел некоторое исследование, но не удалось найти ничего связанного с основными данными ..: |

Спасибо заранее !!! :)

1 Ответ

2 голосов
/ 16 декабря 2011

Do [assignment valueForKey:@"gradable"], если это NSManagedObject, у которого нет подкласса, который должен сделать компилятор тише, но если у этого объекта нет ключа @ "gradable", у вас будет исключение во время выполнения и произойдет сбой. (вы также можете использовать это на подклассе)
Если вы создали подкласс NSManagedObject и хотите использовать что-то еще, что valueForKey (поскольку строка более подвержена ошибкам), объявите свойство в этом подклассе, чтобы компилятор мог его найти. В .m вы бы не использовали @synthesis в этом случае, но ключевое слово @dynamic, которое в основном говорит компилятору, у меня нет реализации для этого свойства, но во время выполнения у вас будет такая. И этот будет предоставлен Core Data.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...