具有值类型的域删除对象

时间:2017-12-05 08:29:52

标签: ios swift database realm

我为领域对象创建协议遵循本教程:

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。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我解决这个问题的方法是确保我提供给Realm删除的对象只是直接从Realm获取。它似乎不喜欢&#39; getManagedObject&#39;制作的映射对象。

有关详细信息,请参阅此问题:Can only delete an object from the Realm it belongs to