I am calling an Api asynchronously to get the data. Then I am assigning the data to a shared instance successfully inside a block given below.
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];
    }
This all working as expected except when I try to update some of the values in one of NSMutableDictionary properties of the 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]; always crashes my app.
Now I have vague idea whats going on, basically I am setting obj inside a block code, whilst in my update function I am trying to change the contents outside block code.
The error I get is
reason: '-[__NSDictionaryI setObject:forKey:]: unrecognized selector sent to instance
Note this error goes away if i declare line
[[ObjectBuilder sharedManager]setObject:obj];
Outside the finish:^ block But then I lose all the data obtained from api call.
Object is declared as below @interface Object : NSObject
@property (strong, nonatomic)  NSMutableDictionary *sch;
