尝试在objective-c中从objects[0]插入nil对象
Posted
技术标签:
【中文标题】尝试在objective-c中从objects[0]插入nil对象【英文标题】:attempt to insert nil object from objects[0] in objective-c 【发布时间】:2015-12-10 12:49:42 【问题描述】:我正在尝试创建一个动态顶部菜单。 我必须从 json 请求中获取一些数据,并在顶部菜单的某个部分中显示这些数据。我是 Objective-C 的新手。我也尝试过使用 NSMutableArrays 并且出现错误。只有一个 MutableArray 和我可以显示顶部菜单。我正在关注顶部菜单“https://github.com/dopcn/DOPNavbarMenu”的这个第三方框架。
- (DOPNavbarMenu *)menu
if (_menu == nil)
[strArray objectAtIndex:0];
NSLog(@"Random Selection is:%@",strArray);
_menu = [[DOPNavbarMenu alloc] initWithItems:@[strArray] width:self.view.dop_width maximumNumberInRow:_numberOfItemsInRow];
_menu.backgroundColor = [UIColor blackColor];
_menu.separatarColor = [UIColor whiteColor];
_menu.delegate = self;
return _menu;
-(void)loadData
strResponse=[dictionary objectForKey:@"data"];
strMsg=[strResponse valueForKey:@"Text"];
NSLog(@“string message is :%@",strMsg);
NSLog(@"String Response is :%@",strResponse);
NSLog(@"Text Response is: %@",strMsg);
strArray = [[NSMutableArray alloc] init];
[strArray addObject:strMsg];
NSLog(@"Array values are - %@", strArray);
数组值是:生活方式、护理计划、追踪器/日记、问卷/评估。
但我遇到了这样的异常:
* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[__NSPlaceholderArray initWithObjects:count:]: 尝试从 objects[0] 插入 nil 对象”
【问题讨论】:
请将您的代码放入代码标签中(4个空格缩进) @AminNegm-Awad 感谢您的回复。但我不能得到你.. user3201089 或 Surya,请阅读 SO 文档。代码引用应格式化为代码。 你确定menu
方法在loadData
完成后被调用吗?
@Avi 请指导我..如何将数组值添加到菜单????
【参考方案1】:
好的,根据您的评论
但我想在 loadData 完成之前调用菜单方法
问题出在这里:
_menu = [[DOPNavbarMenu alloc] initWithItems:@[strArray] width:self.view.dop_width maximumNumberInRow:_numberOfItemsInRow];
在运行loadData
之前,我假设strArray
是nil
。这会导致这部分 @[strArray]
失败 - 这会创建一个新数组,其中 strArray
作为其唯一元素,不能是 nil
。
我还假设您希望将strArray
本身传递到那里,而不是将其包装在另一个数组中。
现在,如果您在将 strArray
填充到 loadData
之前调用 menu
,则菜单中可能不会出现任何项目,除非您有办法在 loadData
完成后用新项目更新它。
总结一下:要解决您当前的问题,您应该将上面的行更改为:
_menu = [[DOPNavbarMenu alloc] initWithItems:strArray width:self.view.dop_width maximumNumberInRow:_numberOfItemsInRow];
应该可以,但由于上述原因,菜单中不会出现任何项目。
【讨论】:
感谢您的回复.. 但我的值为零。随机选择是:(null) 是的,就像我说的 - 在您的代码中,您在loadData
中创建 strArray
。如果在loadData
之前调用menu
方法,那么strArray
必然是nil
。理想情况下,您应该创建菜单,从网络加载数据,然后刷新菜单。
我的问题修复。但菜单中没有项目
@VijaySanghavi - 问题中有一个指向 github 页面的链接,不需要弄乱它。
@user3201089 - 同样,这是因为 strArray
在创建菜单后被创建和填充。以上是关于尝试在objective-c中从objects[0]插入nil对象的主要内容,如果未能解决你的问题,请参考以下文章
在objective-c中从“JSON-style” NSString中获取正确的值
无法在 Xcode 控制台中从 Objective-C 记录 Swift Singletons
Objective-C Associated Objects 初识