[英]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.