请求成员不是结构或联合

时间:2011-01-16 21:45:46

标签: cocos2d-iphone structure union

我正在尝试在我的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,我也导入了这两个类,但我仍然遇到错误。

3 个答案:

答案 0 :(得分:0)

评论的相关部分

乔纳森

鉴于问题不仅仅是. vs ->,另一个主要选项是,你的viewController确实包含任何痣或兔子。

  

我正在使用http://www.raywenderlich.com/1914/how-to-save-your-app-data-with-nscoding-and-nsfilemanager上的教程。 (有代码可供下载。)

     

这样做的:

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

你的同等人物是否正确定义了'mole'和'bunny'?如果是这样的话,我无法帮助你。

  

我从未下载过源代码,因此我没有看到任何内容。谢谢,我想知道他是否可能将bug作为数组而不是bug精灵。

答案中不是非常相关的部分

在使用GCC的常规C或C ++中,错误消息通常在以下情况发生:

  • 您使用structptr->member,您应该使用structvar.member
  • 您使用structvar.member,您应该使用structptr->member

在这个时刻,Objective-C已经足够接近C了,我相信您可能需要检查一下. vs ->符号的使用情况。

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

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

您可能需要使用viewController->moleviewController->bunny代替? (我不确定,但是在Objective-C是C的超集的范围内,这将是一个必要的改变。但是,Objective-C可能会消除区分{{1}的需要。 }和.。)

答案 1 :(得分:0)

在你给出的链接上使用的是RootViewController类,你试图使用UINavigationController,它就像@Jonathan所说的那样没有像mole和bunny这样的属性

答案 2 :(得分:0)

我也有错误的“会员请求”选项“在某个结构或联合的东西中”出现。

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

@implementation Dialog
@dynamic options;

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