Ios Can';t访问其他函数中的数组

Ios Can';t访问其他函数中的数组,ios,objective-c,arrays,Ios,Objective C,Arrays,在lynda.com上的一篇教程之后,我做了一个安排。也许教程有点旧,但当我在viewDidLoad中创建数组时,我无法在中访问它 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 函数,所以我将它从viewDidLoad移到了这个函数中,现在我无法在prepare for segue函数中访问它,所以我必须重新创建数组,以便执行我想要执行的

在lynda.com上的一篇教程之后,我做了一个安排。也许教程有点旧,但当我在viewDidLoad中创建数组时,我无法在中访问它

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

函数,所以我将它从viewDidLoad移到了这个函数中,现在我无法在prepare for segue函数中访问它,所以我必须重新创建数组,以便执行我想要执行的操作。这就是应该发生的吗?

您需要在@interface中创建属性,例如:

@interface SettingsViewController ()
    @property (strong, nonatomic) NSMutableArray *settings;
@end
这将创建一个可以在整个类中使用的变量(它的private,tho)。要访问它(getter/setter),然后键入
self.settings

然后,不要在
cellForRow..
中创建数组,只需在
viewDidLoad
中添加设置即可,例如:

self.settings = [NSMutableArray new];

Settings *settingsStar = [Settings new];
settingsStar.name = @"Rate the App";
[self.settings addObject:settingsStar];

Settings *settingsShare = [Settings new];
settingsShare.name = @"Tell Your Friends";
[self.settings addObject:settingsShare];

...
为了使代码更清晰,您甚至可以基于数组将其与for循环一起使用,如:

self.settings = [NSMutableArray new];
NSArray *settingsNames = @[@"Rate the App", @"Tell Your Friends"];
for (NSString *setting in settingsNames) {
    Settings *newSettings = [Settings new];
    newSettings.name = setting;
    [self.settings addObject:newSettings];
}

您需要包括您实际询问的代码。听起来很可能是在需要实例变量时创建了本地数组。