-->

NSString的值块才回到已运行(NSString value returning before

2019-10-22 21:08发布

我想一个块之外使用块(“FID”)的内部产生的值。 问题是,该值被拉动的块已经运行之前,并因此该值返回为(零)时,即使该数据存在。 有谁知道我怎样才能使这项工作? 见代码:

。H

@property (nonatomic, strong) NSString *fid;

.M

[DIOSFile fileSave:file success:^(AFHTTPRequestOperation *operation, id responseObject) {
  NSLog(@"File uploaded!");


  [file setObject:[responseObject objectForKey:@"fid"] forKey:@"fid"];
  [file removeObjectForKey:@"file"];

  fid = [responseObject objectForKey:@"fid"];

  NSLog(@"%@",responseObject);


} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
  NSLog(@"Failed to upload file!");
}];

NSMutableDictionary *dict = [NSMutableDictionary dictionary];

[dict setObject: [NSString stringWithFormat:@"%@", fid] forKey:@"fid"];
NSLog(@"%@", fid);

NSDictionary *fidLangDict = [NSDictionary dictionaryWithObject:[NSArray arrayWithObject:dict] forKey:@"und"];

[nodeData setObject:fidLangDict forKey:@"field_photo"];

Answer 1:

移动码块内

[DIOSFile fileSave:file success:^(AFHTTPRequestOperation *operation, id responseObject) {
  NSLog(@"File uploaded!");


  [file setObject:[responseObject objectForKey:@"fid"] forKey:@"fid"];
  [file removeObjectForKey:@"file"];

  fid = [responseObject objectForKey:@"fid"];

  NSLog(@"%@",responseObject);
  NSMutableDictionary *dict = [NSMutableDictionary dictionary];

  [dict setObject: [NSString stringWithFormat:@"%@", fid] forKey:@"fid"];
  NSLog(@"%@", fid);

  NSDictionary *fidLangDict = [NSDictionary dictionaryWithObject:[NSArray arrayWithObject:dict] forKey:@"und"];

  [nodeData setObject:fidLangDict forKey:@"field_photo"];


} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
  NSLog(@"Failed to upload file!");
}];


Answer 2:

有两种方法可以做到这一点:

  1. 将要成功后执行完毕块外的代码转化为成功的块。

  2. 创建方法并传递responseObject作为参数传递给它。 用的onSuccess responseObject调用此方法作为参数。 不这样做的以下要求完成什么块

让我知道如果您需要任何帮助



文章来源: NSString value returning before Block has run