为什么我不能在我的方法内修改对象

时间:2018-11-16 10:51:29

标签: objective-c asynchronous objective-c-blocks

我正在异步调用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];

    }

除了我尝试更新obj的NSMutableDictionary属性之一中的某些值时,所有这些工作均按预期进行。

- (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;

0 个答案:

没有答案