j'ai un blocks qui chargelesdonnéesàpartird'un serveur,le probleme c'est que je ne peux pas affecter mon resultat dans une variable global dans le block
来自Google翻译:
我有从服务器加载数据的块,问题是我不能影响块中全局变量的结果
[URLImages asyncRequest:RequestForPopular
success:^(NSData *data, NSURLResponse *response) {
NSLog(@"Success!");
NSError* error;
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:data
options:kNilOptions
error:&error];
NSArray *arrayimages;
arrayimages = [[[json objectForKey:@"result"] objectForKey:@"images"] objectForKey:@"_content"];
NSMutableArray *mutArrURLss = [[NSMutableArray alloc]init];
for (int i=0; i<[arrayimages count];i++)
{
NSDictionary *arrayContent = [arrayimages objectAtIndex:i];
[mutArrURLss addObject:[arrayContent objectForKey:@"element_url"]];
}
mutArrURLs = mutArrURLss //mutArrURLs is Global
}
failure:^(NSD`enter code here`ata *data, NSError *error) {
NSLog(@"Error! %@",[error localizedDescription]);
}];
答案 0 :(得分:0)
首先创建全局可变数组:
NSMutableArray *mutArrURLs
然后在viewDidLoad中,甚至在“+(void)initialize”:
中mutArrURLs = [[NSMutableArray alloc]init];
现在你有一个可以在块中操作的对象。不要创建临时文件,只需将对象添加到此全局数组中。
编辑:无法理解为什么将它作为静态帮助,但很高兴为你工作。
答案 1 :(得分:-2)
如果要在块内更改/分配全局变量,则在声明全局变量时应使用__block
指令。它应该是这样的:__block NSMutableArray *mutArrURLs;
。