Несовместимые типы указателей, присвоенные «NSMutableData *» из «NSData *»

Я получаю сообщение ОШИБКА

«Несовместимые типы указателей, назначенные для« NSMutableData * »из« NSData * »»

Насколько мне известно, это должно быть предупреждение, а не ошибка. Итак, я думаю, есть ли проблема с настройкой моего проекта Xcode?

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


person Dipen Patel    schedule 13.02.2015    source источник
comment
stackoverflow.com/questions/5100111/ ?   -  person Larme    schedule 13.02.2015


Ответы (3)


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

По сути, вы не должны делать то, что делаете. Используйте mutableCopy, чтобы убедиться, что данные изменяемы, или, поскольку вы вызываете конструктор, убедитесь, что вы вызываете его на NSMutableData.

person Wain    schedule 13.02.2015

Похоже, ваш self.activeDownload объявлен как тип NSMutableData, поэтому компилятор сообщает вам, что присвоение недействительно (т. е. вы не можете изменять данные после присвоения). Просто измените NSData на NSMutableData.

self.activeDownload = [NSMutableData dataWithContentsOfFile:filePath];
person TTillage    schedule 13.02.2015

Вам повезло, что это ошибка. Только совершенно неопытные программисты могут сделать это просто предупреждением. Если в вашем коде есть ошибка, вы бы предпочли, чтобы компилятор сообщил вам об этом или чтобы вы начали отладку?

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

person gnasher729    schedule 13.02.2015