Cocos2d iphone 请求非结构或联盟中的成员

Cocos2d iphone 请求非结构或联盟中的成员,cocos2d-iphone,structure,union,Cocos2d Iphone,Structure,Union,我正在尝试在AppDelegate中进行一些保存/加载,为此我需要我的敌人和英雄精灵。我用的是cocos2d。下面是获取警告的方法 -(void)applicationDidFinishLaunchingWithOptions:(UIApplication *)application { NSMutableArray *loadedMoles = [DataBase loadDocs]; NSMutableArray *loadedBunnies = [DataBase loadDocs];

我正在尝试在AppDelegate中进行一些保存/加载,为此我需要我的敌人和英雄精灵。我用的是cocos2d。下面是获取警告的方法

-(void)applicationDidFinishLaunchingWithOptions:(UIApplication *)application {
 NSMutableArray *loadedMoles = [DataBase loadDocs];
 NSMutableArray *loadedBunnies = [DataBase loadDocs];
 UINavigationController *navigationController;
 viewController = (RootViewController *) [navigationController.viewControllers objectAtIndex:0];
 viewController.mole = loadedMoles; //error
 viewController.bunny = loadedBunnies; //error
}
尽管这是AppDelegate,但我已经导入了这两个类,仍然会出现错误。

注释的相关部分 乔纳森 考虑到问题不仅仅是
->
,另一个主要选项是viewController确实包含任何鼹鼠或兔子

乔 我正在使用的教程。(这里有代码可以下载。)

做:

viewController->mole = loadedMoles;

'struct RootViewController' has no member named 'mole'
如何将其添加到viewController


虽然在教程中他们使用

NSMutableArray *loadedBugs = [ScaryBugDatabase loadScaryBugDocs];
RootViewController *rootController = (RootViewController *)
                       [navigationController.viewControllers objectAtIndex:0];
rootController.bugs = loadedBugs; 
乔纳森 在下载的代码(
ScaryBugs3/Classes/rootViewController.h
)中,演示有:

@class EditBugViewController;
@interface RootViewController : UITableViewController {
    NSMutableArray *_bugs;
    EditBugViewController *_editBugViewController;
}

@property (retain) NSMutableArray *bugs;
@property (retain) EditBugViewController *editBugViewController;

@end
你的等价物是否正确定义了“鼹鼠”和“兔子”?如果是这样的话,我无法进一步帮助你

乔 我从未下载过源代码,所以我没有看到任何这些。谢谢,我想知道他是否会把虫子作为数组而不是虫子精灵

答案中不太相关的部分 在规则C或C++中,GCC错误信息通常在:

时发生。
  • 您可以使用
    structptr->member
    ,并且应该使用
    structvar.member
    ,或者
  • 您可以使用
    structvar.member
    ,并且应该使用
    structptr->member
Objective-C在这一点上与C非常接近,我相信您可能需要回顾一下
->
符号的用法

既然代码清晰可辨,那么给出错误的行是:

viewController.mole = loadedMoles; //error
viewController.bunny = loadedBunnies; //error

您可能需要使用
viewController->mole
viewController->bunny
?(我不确定这一点,但如果Objective-C是C的超集,这将是一个必要的更改。但是,Objective-C可能不需要区分
->

在您提供的链接中,使用的是RootViewController类,您正在尝试使用UINavigationController,它不具有@Jonathan所说的mole和bunny等属性

我还遇到了一个错误,即“在非结构或联合中请求成员”选项

@interface Dialog :  NSManagedObject {}
@property (nonatomic, retain) NSSet* options;

@implementation Dialog
@dynamic options;

我只是忘记了在试图访问此实例的类中导入“Dialog.h”。

谢谢您的回答,但对于ObjC@JoeTheMonkey:另一个主要选项是,您的viewController不包含任何鼹鼠或兔子。我隐约记得看到Objective-C对
->
都使用
进行管理,但没有查找它以进行检查说“struct RootViewController”没有名为“mole”的成员如何将其添加到viewController?尽管在教程中他们使用了NSMutableArray*loadedBugs=[ScaryBugDatabase loadScaryBugDocs];RootViewController*rootController=(RootViewController*)[navigationController.ViewController对象索引:0];rootController.bugs=loadedBugs;在下载的代码(ScaryBugs3/Classes/rootViewController.h)中,演示有:
@class-EditBugViewController@接口RootViewController:UITableViewController{NSMutableArray*\u bugs;EditBugViewController*\u EditBugViewController;}@property(retain)NSMutableArray*bugs@属性(保留)EditBugViewController*EditBugViewController@结束
。你的等价物是否正确定义了“鼹鼠”和“兔子”?如果是这样,我无法进一步帮助您。您有什么错误?问题的标题-在非结构或联合体中请求成员这是我遵循Cmd-F(查找快捷方式)并搜索“AppDelegate”的教程。这将带您进入我在教程中遇到问题的部分,他正在使用RootViewController和navigationController alsoviewController是我的RootViewController的名称