gpt4 book ai didi

objective-c - 仍然对 Objective C 变量作用域感到困惑

转载 作者:行者123 更新时间:2023-12-03 07:07:37 27 4
gpt4 key购买 nike

我正在尝试从 JSON 服务获取一些员工数据。我能够获取数据并将其加载到 NSMutableArray 中,但我无法在获取数据的方法范围之外访问该数组。

TableViewController h 提交

#import <UIKit/UIKit.h>
#import "employee.h"

@interface ViewController : UITableViewController

{
//NSString *test;
//NSMutableArray *employees;
}

@end

这是我的 m 文件:

#define kBgQueue dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
#define scoularDirectoryURL [NSURL URLWithString: @"https://xxxx"]

#import "ViewController.h"

@interface ViewController()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

dispatch_async(kBgQueue, ^{

NSData* data = [NSData dataWithContentsOfURL:
scoularDirectoryURL];

[self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES];
});
}


- (void)fetchedData:(NSData *)responseData {

NSError* error;
NSMutableArray *jsonArray = [NSJSONSerialization JSONObjectWithData: responseData options: NSJSONReadingMutableContainers error: &error];
id jsonObject = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];

NSMutableArray *employees = [[NSMutableArray alloc ]init];
if (!jsonArray) {

} else {

for (jsonObject in jsonArray){
employee *thisEmployee = [employee new];
thisEmployee.fullName = [jsonObject objectForKey:@"$13"];
thisEmployee.state = [jsonObject objectForKey:@"state"];
thisEmployee.city = [jsonObject objectForKey:@"city"];
[employees addObject:thisEmployee];
}
}
}

如有任何帮助,我们将不胜感激。

布莱恩

最佳答案

你走在正确的道路上。您所要做的就是取消注释 @interface 中的 NSMutableArray 声明,然后更改此行:

NSMutableArray *employees = [[NSMutableArray alloc] init];

到此

employees = [[NSMutableArray alloc] init];

在接口(interface)中声明数组将允许从实现中的任何位置访问它,如果将其声明为公共(public)属性,甚至可以从其他类和文件访问它。当您在函数内部进行声明时,该变量的作用域不会扩展到函数外部。

关于objective-c - 仍然对 Objective C 变量作用域感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20011794/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com