在Block运行之前返回的NSString值

我试图使用一个块(“fid”)内的一个块内生成的值。 问题是,在块运行之前,值正在被拉动,所以即使数据存在,值也会返回为(null)。 有谁知道我可以做这个工作? 见代码:

。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"]; 

移动块内的代码

 [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!"); }]; 

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

  1. 将完成块外的代码移动到成功后要执行的成功块。

  2. 创build一个方法并将responseObject作为parameter passing给它。 Onsuccess以responseObject作为参数调用此方法。 不要做任何低于要求的完成块

让我知道你是否需要任何帮助