UIViewController *viewVC = nil;
NSString *TcodeNib = [selectedObject valueForKey:@"ViewControllerName"];
// Create the next-level view controller
if ([TcodeNib isEqualToString:@"FirstViewController"]) {
viewVC = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
} else if ([TcodeNib isEqualToString:@"SecondViewController"]) {
viewVC = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
}
viewVC.referringObject = [selectedObject managedObjectContext];
viewVC.referringTransaction = referringObject;
但是,我在编译代码时收到错误:
request for member 'referringObject' in something not a structure or union
在使用固定的viewcontroller值进行测试时,我正在使条件正常工作......请提出任何建议!
答案 0 :(得分:4)
UIViewController *viewVC = nil; [blah blah blah] viewVC.referringObject = [selectedObject managedObjectContext]; viewVC.referringTransaction = referringObject;
但是,我在编译代码时收到错误:
request for member 'referringObject' in something not a structure or union
那是因为UIViewController没有referringObject
属性。 (尝试使用Clang而不是GCC进行编译;它可能会给你一个更清晰的错误消息。)它也没有referringTransaction
属性,所以如果你删除第一个赋值,你会得到类似的第二个错误。
您声明viewVC
持有指向UIViewController的指针,因此所有编译器都知道:viewVC
将持有nil
或指向UIViewController的指针。它没有假设你可能实例化的UIViewController的哪些子类。你说那个对象是一个UIViewController,所以你不能分配给那个对象的那些属性,因为UIViewController没有它们。
您需要将viewVC
声明为持有指向 具有这些属性的对象的指针。由于您要存储指向两个不同类之一的实例的指针(我假设两个类都声明它们的实例具有这些属性),因此有两种解决方案:
我可能会做后者,并将您当前在First和SecondViewController之间复制粘贴的任何内容移动到抽象类中。
答案 1 :(得分:0)
添加
NSLog(@"Value of TcodeNib: %@",TcodeNib);
后:
NSString *TcodeNib = [selectedObject valueForKey:@"ViewControllerName"];
可能不是你的想法。