Я получаю сообщение об ошибке: несовместимые типы указателей, инициализирующие NSMutableArray * выражением типа NSArray? - PullRequest
1 голос
/ 12 декабря 2011
NSMutableArray *sortedReleases = [theReleases sortedArrayUsingComparator:^(id a, id b)

Я получаю следующее:

Несовместимые типы указателей, инициализирующие «NSMutableArray *» выражением типа «NSArray *»

Я должен иметь sortedReleases как NSMutableArray. Как мне пройти это?

Спасибо

Ответы [ 2 ]

6 голосов
/ 12 декабря 2011

Это должно сработать, я думаю (написано в браузере) - NSMutableArray наследуется от NSArray, поэтому вы можете использовать конструктор arrayWithArray.

NSMutableArray *sortedReleases = [NSMutableArray arrayWithArray:[theReleases sortedArrayUsingComparator:^(id a, id b)]]
1 голос
/ 12 декабря 2011

sortedArrayUsingComparator возвращает NSArray*, вы хотите NSMutableArray*.В ObjC изменяемые типы наследуются от неизменяемых типов, поэтому вы не можете просто использовать NSArray*.Вам нужно что-то, чтобы взять NSArray* и дать вам эквивалент NSMutableArray*.В этом случае метод NSMutableArray arrayWithArray сделает это.

Попробуйте что-то вроде:

NSMutableArray *immutableSortedReleases = [theReleases sortedArrayUsingComparator:^(id a, id b)...]
NSMutableArray *sortedReleases = [NSMutableArray arrayWithArray:immutableSortedReleases];

Или, если достаточно ясно, пропустите immutableSortedReleases и поставьте вызов arrayWithArrayвстроенный.

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