我在 ViewController.h
中声明了以下内容@property (nonatomic, strong) NSMutableArray *locations;
以及 ViewController.m
中的以下内容@implementation GHViewController
@synthesize locations;
...
for (FSFourSquareVenueObject *object in array) {
locations = [[NSMutableArray alloc] init];
[locations addObject:object.locationName];
NSLog(@"%@", locations);
}
这会成功记录已放置在locations
NSMutableArray
中的所有字符串位置。如何在其他课程中访问此NSMutableArray
?
我试图在TableViewController
类中访问它以显示数组中的所有元素。我已尝试将ViewController.h
文件导入我的TableViewController.h
文件,但我仍然无法从ViewController
类访问该数组。
答案 0 :(得分:2)
删除行
locations = [[NSMutableArray alloc] init];
从你的for循环将其放在viewDidLoad
或init
之类的地方。在添加新对象之前,每次都要擦除阵列。
要跨类访问单个对象,您需要研究创建单例。网上有很多教程。
答案 1 :(得分:0)
执行@Stonz2建议,但也按如下方式修改标题:
在 GHViewController.h :
@property (nonatomic, strong) NSArray *locations;
在 GHViewController.m
中@implementation GHViewController
@synthesize locations;
...
NSMutableArray *array = [[NSMutableArray alloc] init];
for (FSFourSquareVenueObject *object in array) {
[array addObject:object.locationName];
NSLog(@"%@", array);
}
self.locations = [array copy];
然后,您可以使用GHViewController -locations
从另一个类访问该数组。您可以使用以下代码段(或通过在GHViewController中创建类似的方法)编辑位置:
NSMutableArray *array = [gh_viewController.locations mutableCopy];
[array addObject: newLocation];
gh_viewController.locations = [array copy];
公开可变数组允许其他类修改数组而不通知GHViewController
,反之亦然。这可能导致不可预测且难以调试的问题,例如GHViewController
在TableViewController
迭代所有对象时删除某些元素。使用非可变数组可以防止出现这些类型的错误,并确保每个人都能看到内部的内容。