显示一个button,让JSON响应等于一个string,如@“未经批准”

在这里,我从API中获取一些剪辑。 而我想显示一个button,当剪辑的状态是未经批准,所以在JSON响应当前我显示“0”为“未经批准”。 所以现在想要显示一个button的时候
staus是“0”。 我得到下面的代码从堆栈只是工作正常[公园enumerateObjectUsingBlock ..]我得到的答复状态等于“1”和一些片段“0”。 但是我的代码在NSSring *标题之后不起作用,因此显示标题为零,所以告诉我如何获得*标题中的值

// log debugger response -- park=(__NSArrayM) * @"3 objects" [0] (MyVideos *) // _clip_name=(NSTaggedPointerString) * @"Kotak1" // _state=(NSTaggedPointerString) * @"1" // _clip_image_path=(__NSCFString *)@"1EKNA1464617788.jpg" // status = (NSString *)nil NSURL *url = [NSURL URLWithString:@"task=webapi.getJClips"]; park = [jsonLoader videosFromJSONFile:url]; [park enumerateObjectsUsingBlock:^(id object, NSUInteger idx, BOOL *stop) { // if i add a breakpoint at above line and on this line it give me response state = "1" but on below line it crashes //here it crashes on below line in debugger it shows title nil NSString *title = object[@"state"]; } // here below is code for showing hidden button after getting response "0" if ([title isEqual:@"0"]) { //If so, get the correct button from the enumerate idk and set hidden NO and text = title // UIButton *button = [buttonArray objectAtIndex:idx]; // button.hidden = NO; // button.text = title; } 

  1. 你在一个块中声明了NSString *标题,所以这不会在块之外工作。
  2. 如果([title isEqual:@“0”])比较对象指针并且应该是if([title isEqualToString:@“0”]),则将NSString与另一个NSString
  3. 由于块是独立运行的,因此在“if([title …]”行被执行之前,您的标题不会被设置
  4. UI操作必须在主线程上运行

所以,毕竟,更好的方法是:

 [park enumerateObjectsUsingBlock:^(id object, NSUInteger idx, BOOL *stop) { if([object[@"state"] isEqualToString:@"0"]) { dispatch_async(dispatch_get_main_queue(), ^{ UIButton *button = [buttonArray objectAtIndex:idx]; button.hidden = NO; button.text = title; }); } }