ios – 如何保护领域中的重复记录插入

ios – 如何保护领域中的重复记录插入,第1张

概述我曾经在领域数据库中插入远程通知数据.但问题是, 我发送包含content-available = 1的每个通知,这意味着每次通知都在didReceiveRemoteNotifications中工作,并且当用户点击或不通知时保存静默通知.因此,如果我的应用程序在后台,将有两个记录插入. 第一个条件是当应用程序处于后台时发出通知,由于content-available = 1而调用didReceiv 我曾经在领域数据库中插入远程通知数据.但问题是,
我发送包含content-available = 1的每个通知,这意味着每次通知都在dIDReceiveRemoteNotifications中工作,并且当用户点击或不通知时保存静默通知.因此,如果我的应用程序在后台,将有两个记录插入.

第一个条件是当应用程序处于后台时发出通知,由于content-available = 1而调用dIDReceiveRemoteNotification并插入一条记录.

因此,第二个条件是如果用户在通知中心内点击通知,那么该方法再次接收RemoteNotification并插入相同的记录.因此,重复问题.

func application(application: UIApplication,dIDReceiveRemoteNotification userInfo: [NSObject : AnyObject],fetchCompletionHandler handler: (UIBackgroundFetchResult) -> VoID) {    if let aps = userInfo["aps"] as? NSDictionary{        if let alert = aps["alert"] as? NSDictionary{            if let mbody = alert["body"] as? String{                print("Message Body : \(body)")                body = mbody            }            if let mTitle = alert["Title"] as? String{                print("Message Title : \(Title)")                Title = mTitle            }        }    }    let newNotification = NotificationList()    newNotification.Title = Title    newNotification.body = body    onesignalHelper.insertOnesignalNotification(newNotification)    NSNotificationCenter.defaultCenter().postNotificationname("refreshNotification",object: nil)    handler(UIBackgroundFetchResult.NewData)}

这是我的领域代码

func insertOnesignalNotification(List: NotificationList){    // Insert the new List object    try! realm.write {        realm.add(List)    }    // Iterate through all List objects,and delete the earlIEst ones    // until the number of objects is back to 50    let sortedLists = realm.objects(NotificationList).sorted("createdAt")    while sortedLists.count > totalMessage {        let first = sortedLists.first        try! realm.write {            realm.delete(first!)        }        }}

这是我的领域对象

import RealmSwiftclass NotificationList: Object {    dynamic var Title = ""    dynamic var body = ""    dynamic var createdAt = NSDate()    let notifications = List<Notification>()// Specify propertIEs to ignore (Realm won't persist these)//  overrIDe static func ignoredPropertIEs() -> [String] {//    return []//  }}

那么,在我插入新记录之前,有没有办法在领域保护重复记录插入.我是realm swift的新手.有什么帮助吗?

解决方法 您的NotificationList需要主键.

将主键设置为您的对象,如下所示:

class NotificationList: Object {   dynamic var Title = ""   dynamic var body = ""   dynamic var createdAt = NSDate()   dynamic var ID = 0   let notifications = List<Notification>()   overrIDe static func primaryKey() -> String? {      return "ID"   }}

然后使用add(_:update:)添加对象:

realm.add(newNotification,update: true)

如果ID存在,它将更新数据.

总结

以上是内存溢出为你收集整理的ios – 如何保护领域中的重复记录插入全部内容,希望文章能够帮你解决ios – 如何保护领域中的重复记录插入所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1077680.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存