在块iOS中修改全局变量

时间:2013-04-24 15:52:30

标签: ios objective-c objective-c-blocks

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

2 个答案:

答案 0 :(得分:0)

首先创建全局可变数组:

NSMutableArray *mutArrURLs

然后在viewDidLoad中,甚至在“+(void)initialize”:

mutArrURLs = [[NSMutableArray alloc]init];

现在你有一个可以在块中操作的对象。不要创建临时文件,只需将对象添加到此全局数组中。

编辑:无法理解为什么将它作为静态帮助,但很高兴为你工作。

答案 1 :(得分:-2)

如果要在块内更改/分配全局变量,则在声明全局变量时应使用__block指令。它应该是这样的:__block NSMutableArray *mutArrURLs;