【发布时间】:2016-09-02 00:59:06
【问题描述】:
- (void)setToInitialStateMain
{
[super clearBoard];
if (_data[@"StoneOne"] != nil) {
NSDictionary* stoneOne = _data[@"StoneOne"];
NSNumber* c = stoneOne[@"Column"];
NSNumber* r = stoneOne[@"Row"];
NSInteger column = [c intValue];
NSInteger row = [r intValue];
[_boardCol addObject:[NSNumber numberWithInt:column]];
[_boardRow addObject:[NSNumber numberWithInt:row]];
}
}
所以@"StoneOne"、@"Column" 和@"Row" 键来自NSDictionary plist 文件。当我尝试将NSNumber @"Column" 转换为NSInteger 时,一切正常。
现在,[_boardCol addObject:[NSNumber numberWithInt:column]]; 行在“列”是正确的整数 (2) 方面是可以的。但是,当在方法调用结束时设置断点以检查_boardCol(以及_boardRow)时,NSMutableArray* 两个实例变量都在读取nil。这是为什么呢?
【问题讨论】:
-
你的两个 NSMutableArrays 都正确初始化了吗?
-
你是什么意思?我只是将它们作为实例变量写在我的@implementation 模型文件的花括号内。那还没有初始化它们吗?
-
不,你实际上需要在它们可以使用之前在某个地方分配和初始化它们,很可能只是在你的类的 init 方法中
-
谢谢zfetters,你是对的......好电话
-
后续问题:我正在尝试以另一种方法访问 _boardCol 数组的对象,但似乎无法做到这一点。方法调用来自不同的文件,而对“setToInitialStateMain”方法的调用来自同一个文件。
标签: ios objective-c nsmutablearray nsdictionary