NSArray在viewDidLoad之外无法访问

时间:2016-07-07 21:52:18

标签: ios objective-c

希望是一个非常简单的问题。正如您在下面的代码中看到的,我在viewdidload中的代码中设置了两个NSArray。问题是我无法访问viewDidLoad之外的这些数组。有没有办法让我在viewDidLoad之外填充我的cell.textlabel.text?

代码如下:

- (void)viewDidLoad {
    [super viewDidLoad];

    NSURLSession *session = [NSURLSession sharedSession];

    //URLText is from previous VC see .h file.
    NSURLSessionDataTask *dataTask = [session dataTaskWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://www.test.com/%@/%@.json", _URLText, _URLText]] completionHandler:^(
                                                                                                                                                                                               NSData *data,
                                                                                                                                                                                               NSURLResponse *response,
                                                                                                                                                                                               NSError *error) {
        NSDictionary *vDB = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

        NSArray *amountOfV = [vechileDB valueForKeyPath:@"amount"]; //how to assign nsstring from dictionary.
        NSArray *makeOfV = [vDB valueForKeyPath:@"make"];

        NSLog(@"%@ %@", makeOfV, amountOfV);


    }];

    //Run the completed task.
    [dataTask resume];

}

2 个答案:

答案 0 :(得分:3)

您可以将数组定义为.m文件中的属性,请参见下文,然后只使用self.amountOfV引用数组。

@interface YourClass ()
@property (nonatomic) NSArray *amountOfV;
@property (nonatomic) NSArray *makeOfV;
@end

@implementation YourClass 
...

如果您有兴趣,Realm有一篇关于属性属性的文章https://realm.io/news/tmi-objective-c-property-attributes/

答案 1 :(得分:1)

您可以将两个数组声明为以下属性:

self.amountOfV

并将其称为test/controllers/users_controller_test.rb