Передача контекста в iOS для использования основных данных с раскадровкой

У меня проблемы с передачей контекста от делегата приложения к контроллеру представления. У меня есть проблемы. нашел много руководств в Интернете, и все предлагают использовать метод didFinishLaunchingWithOptions для создания контроллера представления, установить свойство контекста и нажать его. Моя проблема в том, что я хочу использовать раскадровку, и контроллер представления создается и помещается в него, а не в делегат приложения.

Я пытался сделать это в своем делегате приложения:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//instantiate local context
NSManagedObjectContext *context = [self managedObjectContext];
if (!context)
{
    // Handle the error.
    NSLog(@"Error: Context is null");
}

//reference the view controller
helloCoreDataViewController1_001 *rootViewController = [helloCoreDataViewController1_001 alloc];

// Pass the managed object context to the view controller
rootViewController.managedObjectContext = context;

return YES;
}

и это в моем контроллере представления:

@implementation helloCoreDataViewController1_001

@synthesize name, address, phone, status, managedObjectContext;
//....

- (IBAction)saveContact
{
NSLog(@"name: %@",self.name.text);
NSLog(@"address: %@",self.address.text);
NSLog(@"phone: %@",self.phone.text); 

//Save the new instance of the contact entity
Contact *contact = (Contact *)[NSEntityDescription insertNewObjectForEntityForName:@"Contacts" inManagedObjectContext:managedObjectContext];

[contact setContactName:[NSString stringWithFormat:@"%@",self.name.text]];
[contact setValue:self.address.text forKey:@"address"];
[contact setContactPhone:[NSString stringWithFormat:@"%@",self.phone.text]];

NSError *error = nil;

if (![managedObjectContext save:&error])
{
    // Handle the error.
    NSLog(@"error: %@", error.description);
    self.status.text = @"Error: contact NOT saved";
}
else
    self.status.text = @"Contact saved";
}

Когда я отлаживаю, я вижу, что в делегате приложения контекст заполнен правильно, а также свойство в контроллере представления в порядке. Но когда вызывается мой метод saveContact , контекст пуст.

Есть ли у вас какие-нибудь предложения по этому поводу? Как передать контекст контроллеру представления с помощью раскадровки?

9
задан Brian Tompsett - 汤莱恩 14 June 2015 в 10:17
поделиться