将NSManagedObject传递给UIViewController

Ale*_*amb 1 cocoa-touch core-data objective-c ios5

如果我将NSManagedObject传递给UIViewController,NSManagedObject将变为null.我能看到的唯一方法就是在每个视图控制器中使用一个获取请求,我希望将托管对象传递给(有几个),但这看起来非常笨拙并容易出错.

我传递托管对象的方式只是说:

viewController.subclassedManagedObject = self.subclassedManagedObject;
Run Code Online (Sandbox Code Playgroud)

它在self中有效但在viewController中它是null.我不明白为什么.任何见解都会非常感激!

非常感谢

编辑:

添加更多细节和清晰度:我在viewController中有一个强大的子类化的managedObject属性,名为booking.

@property (nonatomic, strong) Booking *booking;
Run Code Online (Sandbox Code Playgroud)

这也是我设置UIManagedDocument等的viewController.一切正常.我想将此managedObject传递给TableViewController的一个实例,我喜欢这样:

Booking *booking = [NSEntityDescription insertNewObjectForEntityForName:@"Booking" inManagedObjectContext:self.managedObjectContext];


    [self.bookingDatabase saveToURL:self.bookingDatabase.fileURL
            forSaveOperation:UIDocumentSaveForOverwriting
           completionHandler:^(BOOL success) {
               if (!success) 
               {
                NSLog(@"didn't work");
               }}];

    TableViewController *tableViewController = segue.destinationViewController;
    tableViewController.managedObjectContext = self.managedObjectContext;
    tableViewController.booking = self.booking; 
    tableViewController.bookingDatabase = self.bookingDatabase;
Run Code Online (Sandbox Code Playgroud)

TableViewController中的房产预订我试图既弱又强,既不工作.目前它是这样的:

@property (nonatomic, weak) Booking *booking;
Run Code Online (Sandbox Code Playgroud)

非常感谢再次

afr*_*ick 6

您正在将self.booking传递给tableViewController,但您创建的内容看起来像一个新的局部变量:

Booking *booking = [NSEntityDescription insertNewObjectForEntityForName:@"Booking" inManagedObjectContext:self.managedObjectContext];
Run Code Online (Sandbox Code Playgroud)

什么时候应该

self.booking = [NSEntityDescription insertNewObjectForEntityForName:@"Booking" inManagedObjectContext:self.managedObjectContext];
Run Code Online (Sandbox Code Playgroud)

如果这不能解决问题,您可以尝试设置NSManagedObjectContext以保留新对象,当您转换到新的tableViewController时,自动释放的NSManagedObject可能会消失:

[managedObjectContext setRetainsRegisteredObjects:YES];
Run Code Online (Sandbox Code Playgroud)