Почему я не могу установить объект внутри словаря NSMutable - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть изменяемый объект словаря, который является частью класса Model, объявленного как показано ниже.

@interface Obj : NSObject
@property  NSMutableDictionary *obj;

Ниже приведены значения obj.

{0 = (0, «5,00», «5,59», «14,00», «14,59», «22,00», «22,59»);1 = (1, «5,00», «5,59», «14,00», «14,59», «22,00», «22,59»);2 = (2, «5,00», «5,59», «14,00», «14,59», «22,00», «22,59»);3 = (3, «5,00», «5,59», «14,00», «14,59», «22,00», «22,59»);4 = (4, «5,00», «5,59», «14,00», «14,59», «22,00», «22,59»);5 = (5, «5,00», «5,59», «14,00», «14,59», «22,00», «22,59»);6 = (6, «5,00», «5,59», «14,00», «14,59», «22,00», «22,59»);}

Мое приложение всегда вылетает со следующей строкой кода, когда я пытаюсь установить / обновить значения для определенного ключа.

[Obj.obj setValue:array3 forKey:string];

, где array3 имеет следующие значения.

(4, 5, 6, 14, 15, 22, 23)

Я попытался изменить строку на

[Obj.obj setObject:array3 forKey:string];

Но я всегда получаю ту же ошибку, что и ниже.

Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [__ NSDictionaryI setObject: forKey:]: нераспознанный селектор, отправленный экземпляру 0x6040001b3160'

1 Ответ

0 голосов
/ 23 ноября 2018

Похоже, что вы инициализируете свойство с неизменным значением (это то, что вам говорит __NSDictionaryI).Возможно, что-то вроде:

obj = @{};

Или, возможно, вы читаете это из сериализатора.Обычно они создают неизменяемые коллекции (хотя в зависимости от вашего сериализатора есть варианты создания изменяемых коллекций).Простое определение типа указателя на объект не делает его таким;сам объект должен быть создан как изменяемый словарь.

В какой-то момент должна быть строка кода вроде:

obj = [NSMutableDictionary new];

или

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