2013-06-23 2 views
0

iOS 프로그래밍을 가르치고 this book에 따라 시작하십시오. "AppDelegate * '유형의 객체에서'속성 'MainViewController'를 찾을 수 없습니다.오류 : 'AppDelegate *'객체의 속성이 누락되었습니다.

코드를 올바르게 따라 갔는지, 두 번 겹쳐서 확인했는지, 처음부터 다시 시작했는지 확인했습니다. 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 
,

답변

1

문제는 두 번째 줄 application:didFinishLaunchingWithOptions에 있어야합니다. self.MainViewController은 AppDelegate의 속성을 기대합니다. 이 줄을 제거하고 return YES. 앞에 controller.forecast = forecast;을 추가하십시오.이 시점에서 MainViewController에 대한 참조가 있으며 안전하게 MainViewController가 Storyboard 또는 XIB를 통해 현재 rootViewController로 설정되었다고 가정하면 속성을 안전하게 설정할 수 있습니다.

+0

이 내용은 MainViewController가 rootViewController라고 가정하고 있지만, 여기에서는 안전한 가정으로 생각합니다. – Abizern

+0

이 가정을 덧붙이는데, 지금은 그에 따라 대답을 수정했습니다. – Karl

관련 문제