我为领域对象创建协议遵循本教程:
https://medium.com/@gonzalezreal/using-realm-with-value-types-b69947741e8b
我有:
public protocol Persistable {
associatedtype PropertyValue: PropertyValueType
associatedtype ManagedObject: RealmSwift.Object
associatedtype Query: QueryType
init(managedObject: ManagedObject)
func getManagedObject() -> ManagedObject
}
public typealias PropertyValuePair = (name: String, value: Any)
public protocol PropertyValueType {
var propertyValuePair: PropertyValuePair { get }
}
public protocol QueryType {
var predicate: NSPredicate? { get }
var sortDescriptors: [SortDescriptor] { get }
}
我想创建类似的方法:
public func delete<T: Persistable>(_ value: T) {
realm.delete(value)
}
尝试时
realm.delete(value.getManagedObject())
从领域得到错误&#39;只能从它所属的领域中删除一个对象。&#39;
使用我的协议删除objc。
答案 0 :(得分:0)
我遇到了同样的问题。我解决这个问题的方法是确保我提供给Realm删除的对象只是直接从Realm获取。它似乎不喜欢&#39; getManagedObject&#39;制作的映射对象。
有关详细信息,请参阅此问题:Can only delete an object from the Realm it belongs to