gpt4 book ai didi

ios - 防止重复存储到 Realm

转载 作者:行者123 更新时间:2023-11-28 05:49:37 26 4
gpt4 key购买 nike

我正在使用 Realm 来存储和保存我的数据。一切正常,我刚刚发现用户实际上可以存储重复的项目,这是不好的。我将无法创建一个检查来防止重复项目,任何帮助将不胜感激

函数

func addData(object: OfflineModel)   {    
try! database.write {
database.add(object, update: true)
}
}

//MARK:- Get Offline
func getDataFromDB() -> Results<OfflineModel> {
offlineItems = database.objects(OfflineModel.self)
return offlineItems!
}

//MARK:- Create Offline
func createOfflineList(createdDate: Date, photo: Data, title: String, completion: @escaping CompletionHandler) -> Void {
REALM_QUEUE.sync {
let offlineList = OfflineModel()

offlineList.createdDate = createdDate
offlineList.photo = photo
offlineList.title = title
OfflineFunctions.instance.addData(object: offlineList)
completion(true, nil)
}
}

型号

@objc dynamic var id = UUID().uuidString
@objc dynamic var photo: Data? = nil
@objc dynamic var title : String = ""
@objc dynamic var createdDate: Date?

override static func primaryKey() -> String {
return "id"
}

最佳答案

问题在于,在 createOfflineList 方法中,您创建了一个新的 OfflineModel,它使用 UUID() 生成随机 id .uuidString 因此从 Realm 的角度来看你不能有重复的模型,因为用作主键的 id 总是不同的。您需要使用 title(或您实际想要用来标识模型实例的任何其他非随机属性)作为主键。

class OfflineModel: Object {
@objc dynamic var photo: Data? = nil
@objc dynamic var title : String = ""
@objc dynamic var createdDate: Date?

override static func primaryKey() -> String {
return "title"
}
}

关于ios - 防止重复存储到 Realm ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53364219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com