gpt4 book ai didi

ios - 授予 ViewController 访问数据和 Controller 类的权限

转载 作者:行者123 更新时间:2023-11-29 03:47:51 26 4
gpt4 key购买 nike

我正在尝试通过将我已成功完成的 Apple 教程 (BirdSighting) 修改到我自己的应用程序中,为我的 iOS 项目学习良好的 MVC 实践。他们为模型和 Controller 构建了 NSObject 类。他们的第一个 ViewController 是 TableVC。在appDelegate.m中,他们通过将firstViewController连接到dataController来更改didFinishLaunchingWithOptions。在我的应用程序中,我不希望我的第一个 ViewController 是一个表,而只是一个基本的 VC。我收到警告:指针类型不兼容。这是代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
// enterView is initial UIViewController
enterView *firstViewController = (enterView *)[[navigationController viewControllers] objectAtIndex:0];
// dBcontrols is a NSObject class
dBcontrols *aDataController = [[dBcontrols alloc] init];
firstViewController.dataController = aDataController; // <-- ERROR Here.
return YES;
}

我的第一个 ViewController,enterView,在标题中包含以下内容:

@class contacts;
@class dBcontrols;
@interface enterView: UIViewController
@property (strong, nonatomic) enterView *dataController;

我的模型类、联系人和我的 Controller dBcontrols 实际上与 Apple 教程中的相同。但 ViewController 没有访问 Controller。在 enterView.m 中有这些行:

#import "enterView.h"
#import "contacts.h"
#import "dBcontrols.h"

@interface enterView ()
@end

@synthesize dataController = _dataController;

- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSInteger cntC = [self.dataController countContacts]; <-- ERROR here
NSLog(@"number of contacts = %d", cntC );

}

出现错误:没有可见的接口(interface)声明选择器“countContacts”,这是在 dBcontrols.m 中找到的 Controller 方法,如下所示:

- (NSUInteger)countContacts {
return [self.masterContactList count];
}

这是标题中的内容,dBcontrols.h:

@class contacts;
@interface dBcontrols: NSObject
- (NSUInteger)countContacts;
. . .
@end

我的问题是由从 TableVC 切换到基本 VC 作为第一个 VC 引起的吗?我认为这是本教程唯一相关的更改。我该如何解决?我希望我已经提供了足够的信息。非常感谢!瑞克

最佳答案

看来您混淆了类(class)。在您的应用程序委托(delegate)中,您正在创建一个名为 aDataController 的 dBcontrols 实例,但在 EnterView 的头文件中,您的 dataController 是 EnterView 类的实例 - 我认为您可能指的是 dBcontrols 。

顺便说一句,如果您坚持使用大写字母来开头类名的命名约定,您的代码会更容易阅读。

关于ios - 授予 ViewController 访问数据和 Controller 类的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17479995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com