无法识别的选择器发送到数组中的实例[重复]
Posted
技术标签:
【中文标题】无法识别的选择器发送到数组中的实例[重复]【英文标题】:unrecognized selector sent to instance in Array [duplicate] 【发布时间】:2013-07-01 06:02:30 【问题描述】:我正在尝试将一个对象添加到一个数组中,但它发送了 zig bart 错误 “无法识别的选择器发送到实例” 下面是我的代码
AppDelegate *appdelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
NSDictionary *infomation = [self dictionaryWithContentsOfJSONString:@"Contacts.json"];
IstructContactsOrgByEntity *ObjIstructContactsOrgByEntity=[[IstructContactsOrgByEntity alloc]initWithIstructContactsOrgByEntity:infomation];
NSArray *array=[infomation objectForKey:@"contacts_list"];
for (int ndx = 0; ndx < [array count]; ndx++)
NSDictionary *stream = (NSDictionary *)[array objectAtIndex:ndx];
IstructContacts_List *ObjIstructContacts_List=[[IstructContacts_List alloc]initWithIstructContacts_List:stream];
NSArray *Qnarray=[stream objectForKey:@"contacts"];
for (int i=0; i<Qnarray.count; i++)
NSDictionary *Qnstream = (NSDictionary *)[Qnarray objectAtIndex:i];
IstructContacts *ObjIstructContacts=[[IstructContacts alloc]initWithIstructContacts:Qnstream];
[ObjIstructContacts_List.m_muteArrContacts addObject:ObjIstructContacts];
[ObjIstructContactsOrgByEntity.m_muteArrContacts_List addObject:ObjIstructContacts_List];
[appdelegate.m_ArrContactsOrgEntity addObject:ObjIstructContactsOrgByEntity];
最后一行[appdelegate.m_ArrContactsOrgEntity addObject:ObjIstructContactsOrgByEntity];
导致我的问题。
【问题讨论】:
我想知道有多少关于 unrecognized selector 和 JSON 的问题?我敢打赌,我可以在 2 分钟内找到 5 个骗子。 什么是 zig bart 错误?您是说 SIGABRT 吗? 【参考方案1】:您的问题是编译器认为您已将“m_ArrContactsOrgEntity
”声明为 NSMutableArray 以外的其他内容。
否则,您不会看到“无法识别的选择器”错误。
给你的另一个建议是,Objective-C 中的最佳实践是变量应该始终以小写字母开头。将“ObjIstructContacts
”、“Qnarray
”和“Qnstream
”更改为以小写字母开头。
【讨论】:
【参考方案2】:**AppDelegate.h**
@property(nonatomic,retain) NSMutableArray *m_ArrContactsOrgEntity;
@synthesize m_ArrContactsOrgEntity;
**AppDelegate.m**
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
self.m_ArrContactsOrgEntity = [[[NSMutableArray alloc] init] autorelease];
然后使用 AppDelegate 对象添加对象。
谢谢。
【讨论】:
虽然这看起来是正确的,但我几乎没有什么建议只是为了稍微改进一下。这假设开发人员没有使用ARC
,您应该将其包含在您的答案中,甚至可能提供ARC
版本,只需将retain
更改为strong
并删除autorelease
,建议(不需要)@synthesize
应该像@synthesize m_ArrContactsOrgEntity = _m_ArrContactsOrgEntity;
一样完成。
我还建议在您的答案中解释您的代码的作用,因为如果新开发人员来寻找答案,他们不会知道这里有什么。没有解释的代码本身通常很糟糕,但有解释可以大大改善答案。只有有助于改进您的答案的建议,如果您愿意,您可以忽略它们。【参考方案3】:
m_ArrContactsOrgEntity must be NSmutableArray instead of NSArray.
NOW, You will add any items in m_ArrContactsOrgEntity array.
【讨论】:
以上是关于无法识别的选择器发送到数组中的实例[重复]的主要内容,如果未能解决你的问题,请参考以下文章