我有一个定义为:
的类@interface invItem : NSObject
{
NSString* rowID;
NSString* expDate;
NSString* location;
}
@property(nonatomic, retain)NSString *rowID;
@property(nonatomic, retain)NSString *expDate;
@property(nonatomic, retain)NSString *location;
@end
我正在从Web服务返回的XML(使用XMLParser)读取3个字符串,然后将它们添加到我的invItem对象
例如:
currentItem.rowID = currentNodeContent; etc..
在我阅读的每一行的最后,我需要添加' currentItem'所有3个字符串,我的数组,我正在使用:
[myArray addObject:currentItem];
但是当我在调试器中检查数组时它返回nil,如下所示,我错过了什么?
(lldb) po currentItem.rowID
1889
(lldb) po [[myArray objectAtIndex:0] rowID]
nil
答案 0 :(得分:0)
问题似乎是myArray
本身是零。您需要在某个时刻实例化一个数组,或者您只是毫不费力地将消息发送到nil。 (最好是NSMutableArray,否则当你向它发送addObject
时就会崩溃。)
答案 1 :(得分:0)
好吧,看起来你将分配的对象添加到数组中,否则你会崩溃。它可以通过以下方式轻松测试:
[myArray addObject:nil];
由于您向数组添加了非nil对象,因此有两个可能的原因:
检查为rowID指定值的代码,您也可以使用以下方法:
currentItem.rowID = (currentNodeContent.length > 0) ? currentNodeContent : @"";
它将检查值并避免将nil指定给rowID。