1

我在头文件中声明了一个属性 NSMutableArray。然后我分配,在 viewDidLoad 方法中初始化它。但是当我尝试以不同的方法将对象添加到数组时,它会不断返回(null)。我在做一些明显的错误吗?请询问您是否想查看更多代码。

。H

@property (strong, nonatomic) NSMutableArray *myList;

.m

- (void)viewDidLoad
{
    self.dataController = [[DataController alloc]init];

    self.myList = [[NSMutableArray alloc] init];

    [super viewDidLoad];
}

[...]

NSDictionary *myObject = [self.dataController.objectList objectAtIndex:r];
[[cell textLabel]setText:[myObject objectForKey:@"title"]];

[self.myList addObject:myObject]; 

NSLog(@"myList %@",self.myList);
NSLog(@"myObject %@",myObject);

输出打印 myObject 但 self.myList 不断返回(空)。感谢所有帮助!

编辑:已修复,谢谢您的回答!

4

3 回答 3

1

不确定你在哪里使用这个数组。如果你必须在调用之前使用这个数组viewDidLoad,你可以这样做,

NSDictionary *myObject = [self.dataController.objectList objectAtIndex:r];
[[cell textLabel]setText:[myObject objectForKey:@"title"]];

if (!self.myList)
    self.myList = [[NSMutableArray alloc] init];//for the first time, this will initialize

[self.myList addObject:myObject]; 

由于您使用的[cell textLabel]是我假设您在其中一个表视图代表中执行此操作。在这种情况下,请检查您是否在课堂上设置self.myList = nil;任何位置。

于 2012-12-11T00:52:25.443 回答
0

在您发布的代码中,我没有看到任何错误。设置断点并查看初始化数组的代码是否首先被调用。

于 2012-12-11T00:28:52.797 回答
0

我敢打赌,在执行 NSLogs 时,还没有调用 viewDidLoad。

为确保数组已初始化,请尝试将初始化放在您的 init 方法中。

于 2012-12-11T00:29:43.480 回答