有时,在将对象从一个控制器传递到另一个控制器时,NSManagedobject 对象会出错,是否有任何方法可以将对象作为值类型 objC 传递

Sometime NSManagedobject object become fault when passing object from one controller to another, is there any way to pass object as a value type objC

提问人:Jatin Dave 提问时间:8/16/2022 最后编辑:ArasuvelJatin Dave 更新时间:9/7/2022 访问量:102

问:

第一个控制器

OptiiMobileTaskDetailViewController *taskDetailVC = (OptiiMobileTaskDetailViewController *)segue.destinationViewController;
[taskDetailVC setTask:task];

 

第二个控制器

-(void) setTask:(Task *)task {
    _task = task;
}

这段代码工作正常,但是当我们在第二个 VC 中使用任务对象时,我们得到了 Fault 对象,那么有没有其他方法可以在视图控制器之间传递 NSManaged对象

ios objective-c 核心数据 nsuserdefaults

评论

1赞 Paulw11 8/16/2022
只要故障在您访问任何属性时得到解决,您有故障是否重要?
1赞 Jatin Dave 8/16/2022
@Paulw11这里有一个问题,当我们使用该任务对象属性值时,该属性值为零
1赞 The Dreams Wind 8/16/2022
改为传递对象的 id,并为第二个控制器提供自己的托管上下文,以便它可以实例化自己的数据库状态映像。

答:

1赞 Smit Patel 9/7/2022 #1
+(instancetype) taskWithTaskID:(NSNumber *)taskID {
    
    Task *task = [self getManagedObjectForKey:@"taskID" keyValue:taskID];
    if (!task) {
        
        //Create task
        task = [[OptiiMobileDataStore sharedInstance] createNewObjectNamed:NSStringFromClass([self class])];
        task.taskID = taskID;
        [[OptiiMobileDataStore sharedInstance] insertObject:task];
    }
    
    return task; }

并在获取默认值之前获取新的数据副本

    _task = [Task taskWithTaskID:self.taskID];