【问题标题】:RestKit multiple RKObjectManagers object mappingRestKit 多个 RKObjectManagers 对象映射
【发布时间】:2023-03-20 20:31:01
【问题描述】:

我正在使用两个 RKObjectManager,一个没有 RKManagedObjectStore(这是共享实例),一个有。当我尝试像这样设置 RKManagedObjectStore 时:

[self.storeBackedObjectManager setObjectStore:[RKManagedObjectStore objectStoreWithStoreFilename:@"conversations.sqlite"]];

我收到以下错误:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '[RKObjectManager sharedManager].objectStore cannot be nil'

似乎 RestKit 正在尝试访问 NSManagedObject+ActiveRecord.m 中的 sharedManager(不使用对象存储)的对象存储:

+ (NSManagedObjectContext*)managedObjectContext {
NSAssert([RKObjectManager sharedManager], @"[RKObjectManager sharedManager] cannot be nil");
NSAssert([RKObjectManager sharedManager].objectStore, @"[RKObjectManager sharedManager].objectStore cannot be nil");
return [[[RKObjectManager sharedManager] objectStore] managedObjectContext];

}

有什么方法可以传递对我的第二个存储支持的 RKObjectManager 实例的引用吗? (如果我暂时将共享管理器设置为存储支持的实例,此映射工作正常)

【问题讨论】:

  • 我已经意识到在这种情况下我实际上可以只使用一个包含后备存储的 RKObjectManager 实例。我在这里只使用了一个 baseURL,但我的印象是我无法混合存储支持的对象和非存储支持的对象,但这似乎工作正常。但是,当尝试使用所描述的两个支持/非支持管理器时,仍然会出现上述问题。这可能是 RestKit 错误吗?

标签: objective-c ios restkit


【解决方案1】:

您正在尝试将共享 RKObjectManager 用于托管(核心数据)和非托管模型。您必须为该 RKObjectManager 设置 objectStore 属性。

我认为你可以分别使用两个 RKObjectManagers,只需使用 initWithBaseURL 创建它们

【讨论】:

  • 抱歉,我的问题不正确 - 当我这样做时就会出现问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多