NSMutableArray保持返回null

时间:2012-12-11 00:21:45

标签: objective-c ios xcode

我在头文件中声明了一个属性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保持返回(null)。感谢所有帮助!

修改:已修复,谢谢您的回答!

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我敢打赌,当NSLog执行时,还没有调用viewDidLoad。

要确保数组已初始化,请尝试在init方法中初始化。