ios - 具有删除对象的值类型的 Realm

标签 ios swift database realm

我按照本教程为 Realm 对象创建协议(protocol):

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())

我从 Realm 收到错误“只能从其所属的 Realm 中删除对象。”

使用我的协议(protocol)删除 objc。

最佳答案

我也遇到了同样的问题。我解决这个问题的方法是确保我提供给 Realm 来删除的对象是直接从 Realm 获取的。它似乎不喜欢“getManagedObject”创建的映射对象。

请参阅此问题了解更多信息:Can only delete an object from the Realm it belongs to

关于ios - 具有删除对象的值类型的 Realm ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47649130/

相关文章:

database - 如何在 postgres 中将时区永久更改为 UTC?

ios - Xcode 7 中的 UITest : How to test keyboard layout (keyboardType)

ios - 代码不再在 OS4.3 中工作但在 5.0 中正常(过去工作正常)

ios - 我从 IOS Firebase API 获得 Apple Revoke Tokens Endpoint Parameters (client_id, client_secret, token)

ios - '初始化()' is deprecated: init() will be removed in Swift 3. Use ` 零`

php - 关于重复键更新 - 多列

ios - 启用 UIScrollView 时 subview 不会出现

ios - Xcode 10.1 : Pods not compiling when running UITest

ios - Swift 中 UIViewController 所需的构造函数

mysql - 基于mySql中列值的一部分分组