1

j'ai un blocks qui charge les données à partir d'un serverur, le questione c'est que je ne peux pas effecter mon resultat dans une variable global dans le block

来自谷歌翻译:

我有从服务器加载数据的块,问题是我不能影响块中全局变量的结果

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

2 回答 2

0

首先创建全局可变数组:

NSMutableArray *mutArrURLs

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

mutArrURLs = [[NSMutableArray alloc]init];

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

编辑:无法理解为什么将其设为静态会有所帮助,但很高兴这对您有用。

于 2013-04-24T16:08:45.943 回答
-2

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

于 2013-04-24T21:59:03.070 回答