我正在开发一个SDK,该SDK基本上会编写隐藏API调用的包装方法,并在完成处理程序中返回数据对象:
public static func getDogs(token: String?,completionhandler: @escaping (Int?,[Dog]?) -> Void) {
}
狗是领域对象:
public class Dog: Object {
@objc public dynamic var name: String?
@objc public dynamic var age: Int = 0
}
现在,当我尝试在调用getDogs的过程中访问Dogs时,
getDogs(token: token) { status,dogs in
\\ access Dog[0]
}
按预期,我收到了RealmException:
***由于未捕获的异常“ RLMException”而终止应用程序,原因:“从错误的线程访问了领域。”
现在,如何在完成处理程序中传递此类Realm对象列表,并在以后获得它的情况下进行访问?我知道ThreadSafeReference
,但我不希望最终用户在使用SDK之前先阅读第三方依赖的手册。这里最好的做法是什么?显然,我无法发送Realm对象的列表。同样从独立框架的设计考虑,我不应该假定我们的最终用户应该了解Realm apriori。领域支持应该很好,而不是最重要。
我还有另一个选择是保留同一数据模型的两个副本:一个普通对象和一个Realm对象。但这会增加解析时间。