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

Я вызываю Api асинхронно, чтобы получить данные.Затем я успешно присваиваю данные совместно используемому экземпляру в блоке, указанном ниже.

RestApiManager *api= [[RestApiManager alloc]init];
[ObjectBuilder sharedManager];

self.obj = [[Object alloc]init];
[api get_data:credential.password finish:^(NSDictionary *data) {

    if(data){
       self.obj = [ObjectBuilder obj:data];
        [[ObjectBuilder sharedManager]setObject:self.obj];

    }

Это все работает как положено, за исключением случаев, когда я пытаюсь обновить некоторые значения в одном из свойств NSMutableDictionary объекта obj.

- (void)update: (NSInteger) temp {

   array3 = [[NSMutableArray alloc]init];
   NSNumber *start =[[NSNumber numberWithInteger:var];
   [NSNumber numberWithInteger:var2];
   NSNumber *temp2 =[NSNumber numberWithInteger:temp];
   [array3 addObject:temp2];
   [array3 addObject:start];
   [array3 addObject:end];
   [self.obj.sch setObject:array3 forKey:temp2];

}

[obj.sch setObject: array3 forKey: temp2];всегда вылетает мое приложение.

Теперь у меня есть смутное представление о том, что происходит, в основном я устанавливаю obj внутри кода блока, в то время как в своей функции обновления я пытаюсь изменить содержимое вне кода блока.

Я получаю ошибку

причина: '- [__ NSDictionaryI setObject: forKey:]: нераспознанный селектор, отправленный экземпляру

Обратите внимание, что эта ошибка исчезлаесли я объявляю строку

[[ObjectBuilder sharedManager] setObject: obj];

За пределами финиша: ^ блок Но тогда я теряю все данные, полученные из вызова API.

Объект объявлен как показано ниже @interface Object : NSObject @property (strong, nonatomic) NSMutableDictionary *sch;

...