我有点困惑,我想知道这里的好伙伴是否可以借给我他们的编程专业知识。 我将尽可能地做到尽可能简单和精确: 我是IOS的新开发人员,仅学习了几个月。 我正在大学里为我的论文开发iPhone应用程序。 该应用程序仅是为希望自己为iPhone开发的人的指南,包括教程。 它由许多表格视图组成 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
您好,我正在尝试为嵌套在NSMutableArray内的viewcontroller设置属性,例如,我在此数组内有3个ViewController:
FirstViewController *firstViewController = [FirstViewController alloc];
SecondViewController *secondViewController = [SecondViewController alloc];
ThirdViewController *thirdViewController = [ThirdViewController alloc];
NSMutableArray *viewControllerClasses = [[NSMutableArray alloc] initWithObjects:
firstViewController,
secondViewController,
thirdViewController,
nil];
for (int x=0; x<[viewControllerClasses count]; x++) {
// as an example to set managedObjectContext I otherwise would set firstViewController.managedObjectContext = context;
[viewControllerClasses objectAtIndex:x].managedObjectContext = context;
}
但这会导致错误:请求成员“ managedObjectContext”的对象不是结构或联合。 不应将“ firstViewController”与[viewControllerClasses objectAtIndex:0]相同吗?
-objectAtIndex:
方法返回一个id
,由于编译器无法确定该getter,因此不能对其应用点语法。
无论如何,您应该只使用快速枚举( for
/ in
循环),并且可以指定静态类型,以便可以使用点语法(假设FirstViewController,其余的继承自BaseViewController):
for (BaseViewController* ctrler in viewControllerClasses)
ctrler.managedObjectContext = context;
另外,您可以恢复使用方括号:
for (BaseViewController* ctrler in viewControllerClasses)
[ctrler setManagedObjectContext:context];
(并且请-init…
立即在+alloc
。)
您可以尝试强制转换[viewControllerClasses objectAtIndex:x]
返回不具有managedObjectContext
属性的NSObject
,因此请尝试使用((FirstViewController *)[viewControllerClasses objectAtIndex:x]).managedObjectContext = context;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.