繁体   English   中英

错误:缺少对象'AppDelegate *'的属性

[英]Error: missing property on object 'AppDelegate *'

自学iOS编程,并从开始学习本书 我遇到了错误“在'AppDelegate *'类型的对象上找不到属性'MainViewController'。

我已经仔细检查过两次,以确保我正确地遵循了代码,甚至从头开始重新启动。 我搜寻了StackOverflow并尝试了一些解决方案,但没有一个起作用,并且很少能正确解决我的问题。 有什么帮助吗?

AppDelegate.m(错误所在)

#import "AppDelegate.h"
#import "WeatherForecast.h"
#import "MainViewController.h"

@implementation AppDelegate

@synthesize managedObjectContext = _managedObjectContext;
@synthesize managedObjectModel = _managedObjectModel;
@synthesize persistentStoreCoordinator = _persistentStoreCoordinator;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    WeatherForecast *forecast = [[WeatherForecast alloc] init];
    self.MainViewController.forecast = forecast;
    // Override point for customization after application launch.
    MainViewController *controller = (MainViewController *)self.window.rootViewController;
    controller.managedObjectContext = self.managedObjectContext;
    return YES;
}

MainViewController.h

#import "FlipsideViewController.h"
#import "WeatherForecast.h"

#import <CoreData/CoreData.h>

@interface MainViewController : UIViewController <FlipsideViewControllerDelegate>

- (IBAction)showInfo;
- (IBAction)refreshView:(id) sender;
- (void)updateView;

@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (strong, nonatomic) WeatherForecast *forecast;

@end

问题应该出在您的第二行application:didFinishLaunchingWithOptions self.MainViewController在您的AppDelegate中需要一个属性。 只需删除此行并添加controller.forecast = forecast; return YES.之前return YES. 至此,您已经获得了对MainViewController的引用,并且可以安全地设置属性(假设通过Storyboard或XIB将MainViewController设置为当前rootViewController)。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{    
   WeatherForecast *forecast = [[WeatherForecast alloc] init];
   // Override point for customization after application launch.
   MainViewController *controller = (MainViewController *)self.window.rootViewController;
   controller.managedObjectContext = self.managedObjectContext;
   controller.forecast = forecast;
   return YES;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM