Почему я получаю целочисленное значение ошибки преобразования указателя в target-c? - PullRequest
8 голосов
/ 01 апреля 2012

Я перебираю объект NSString с именем previouslyDefinedNSString и проверяю, находится ли целое число, представляющее значение ASCII буквы, в NSMutableSet с именем mySetOfLettersASCIIValues, который я ранее заполнил NSIntegers:

NSInteger ASCIIValueOfLetter;

    for (int i; i < [previouslyDefinedNSString length]; i++) {

        ASCIIValueOfLetter = [previouslyDefinedNSString characterAtIndex:i];

        // if character ASCII value is in set, perform some more actions...
        if ([mySetOfLettersASCIIValues member: ASCIIValueOfLetter])

Однако я получаю эту ошибку в условии оператора IF.

Incompatible integer to pointer conversion sending 'NSInteger' (aka 'int') to parameter of type 'id';
Implicit conversion of 'NSInteger' (aka 'int') to 'id' is disallowed with ARC

Что означают эти ошибки?Как я конвертирую в тип объекта (какой идентификатор представляет, верно?)?Разве NSInteger не является объектом?

Ответы [ 2 ]

19 голосов
/ 01 апреля 2012

Вы хотите сделать его NSNumber, как в:

NSInteger ASCIIValueOfLetter;

    for (int i; i < [previouslyDefinedNSString length]; i++) {

        ASCIIValueOfLetter = [previouslyDefinedNSString characterAtIndex:i];

        // if character ASCII value is in set, perform some more actions...
        if ([mySetOfLettersASCIIValues member: [NSNumber numberWithInteger: ASCIIValueOfLetter]])

Теперь у вас будет результат, который вы ищете.

11 голосов
/ 01 апреля 2012

Эти ошибки означают, что member: ожидает объект.id - указатель на объект Objective-C, и вместо объекта вы передаете примитивный тип или скаляр (несмотря на префикс NS-, NSInteger не является объектом - просто typedef к примитивному значению, а в вашем случае - int).Что вам нужно сделать, это обернуть это скалярное значение в объект, а именно, NSNumber, который является классом, специально предназначенным для этого.

Вместо вызова member: с ASCIIValueOfLetter, вам нужночтобы назвать его с завернутым значением, [NSNumber numberWithInteger:ASCIIValueOfLetter], как упоминал Маурисио.

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