首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >是否在X小时后从Realm中删除所有数据?

是否在X小时后从Realm中删除所有数据?
EN

Stack Overflow用户
提问于 2021-05-05 19:30:13
回答 1查看 143关注 0票数 0

我正在使用Swift (UIKit)创建一个iOS应用程序,我将所有从应用程序接口获取的数据存储到一个领域中,以便它可以脱机使用。我被要求该应用程序必须在离线模式下可用长达24小时,从最后一次打开它与互联网连接。

有没有办法做到这一点?我在想,当用户打开连接到互联网的应用程序时,启动24小时的计时器(每次用户打开连接的应用程序时都会重新启动),在24小时完成后,运行一个函数来删除领域中的所有数据。

这有意义吗?有没有更好的方法呢?

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2021-05-06 16:31:18

如果它对任何人有帮助的话,我可以通过创建一个新的领域类(DateData)来做到这一点,每当用户打开应用程序并连接到互联网时,我都会更新它。

代码语言:javascript
运行
AI代码解释
复制
class DateData: Object {
 @objc dynamic var date: String = ""

 func dateToString(_ date : Date) -> String{
    let calendar = Calendar.current
    let day = calendar.component(.day, from: date)
    let month = calendar.component(.month, from: date)
    let year = calendar.component(.year, from: date)
    let hour = calendar.component(.hour, from: date)
    let minutes = calendar.component(.minute, from: date)
    let datetime = "\(day)/\(month)/\(year) \(hour):\(minutes)"
    
    return datetime
 }

 func stringToDate(_ date : String) -> Date{
    let formatter = DateFormatter()
    formatter.dateFormat = "dd/MM/yyyy HH:mm"
    
    let newDate = formatter.date(from: date)
    return newDate!
 }
}

并使用以下代码将其添加到领域中:

代码语言:javascript
运行
AI代码解释
复制
let k = K()
if NetworkMonitor.shared.isConnected {
        print("Online mode")
        realmDB.deleteAllData()
        realmDB.addCurrentConnectionDateTime()
        // Code to execute when connected
    }else{
        print("Offline mode")
        let today = Date()
        let date = realmDB.getLastConnecionDate()
        print(today.timeIntervalSince(date))
        if today.timeIntervalSince(date) > (k.connectionHours * 3600) {
            realmDB.deleteAllData()
        }else{
            // Load data from Realm
        }
    }
}

然后,在我的领域数据库中插入了addCurrentConnectionDateTime()和getLastConnectionDate()。以及删除realm中的所有数据:

代码语言:javascript
运行
AI代码解释
复制
struct RealmDatabase {

let realm = try! Realm()


//MARK: - Add current DateTime connection to Realm

func addCurrentConnectionDateTime(){
    let date = Date()
    let d: DateData = DateData()
    let dateString: String = d.dateToString(date)
    d.date = dateString
    // Update last connection with the new one
    try! realm.write{
        try! realm.delete(Realm().objects(DateData.self))
        realm.add(d)
    }
}

//MARK: - Get last connection DateTime
func getLastConnecionDate() -> Date {
    var newLastDate = Date()
    let lastDate = realm.objects(DateData.self)
    newLastDate = DateData().stringToDate(lastDate[0].date)
    
    return newLastDate
}

//MARK: - Delete all data from the Realm

func deleteAllData(){
    try! realm.write{
        try! realm.delete(Realm().objects(Movie.self))
        try! realm.delete(Realm().objects(Genre.self))
        try! realm.delete(Realm().objects(Review.self))
    }
}}

就是这样,现在您在常量文件(K Struct)中插入的值将是数据在被删除之前将在域中保留的小时数。

也许有更好的方法可以做到这一点,因为我是swift的新手,但这是可行的。我希望这对任何人都有帮助!让我知道。

2021快乐!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67407641

复制
相关文章
删除所有jQuery依赖后,性能起飞!
文 | 局长 、出品 | OSC开源社区(ID:oschina2013) 英国政府网站 GOV.UK 前端开发主管 Matt Hobbs 宣布,jQuery 作为该网站所有前端应用程序的依赖项已被删除。通过此举,对于网站的 13 个前端应用程序,其 JS 大小减少了 32 KB(或 31% 到 49%)之间。 根据 Matt 分享网站移除 jQuery 后的数据表现,可总结出如下信息: 整体减少前端处理时间,提升性能 许多关键指标(如 First CPU Idle, JS Long Tasks)的
程序猿DD
2022/05/25
9500
删除所有jQuery依赖后,性能起飞!
如何从 Python 列表中删除所有出现的元素?
在 Python 中,列表是一种非常常见且强大的数据类型。但有时候,我们需要从一个列表中删除特定元素,尤其是当这个元素出现多次时。本文将介绍如何使用简单而又有效的方法,从 Python 列表中删除所有出现的元素。
网络技术联盟站
2023/06/01
13.4K0
Realm数据库 从入门到“放弃”
Realm是由Y Combinator公司孵化出来的一款可以用于iOS(同样适用于Swift&Objective-C)和Android的跨平台移动数据库。目前最新版是Realm 2.0.2,支持的平台包括Java,Objective-C,Swift,React Native,Xamarin。
一缕殇流化隐半边冰霜
2018/08/30
5.1K0
删除线性表中所有值为x的数据元素
voide del_x_l(SqlList &L,Elemtype x){ int k=0;//记录值不等于x的元素个数 for(i=0;i<L.length;i++){ if(L.data[i]!=x){ L.data[k]=L.data[i]; k++;//不等于x的元素增1 } } L.length=k; } voide del_x_2(SqlList &L,Elemtype x){
week
2018/08/27
1.4K0
单链表:在带头节点单链表中删除(minv, maxv)中的所有节点
链表节点删除,只有标记待删除节点的前驱节点即可; [注]:如果不是带有节点设置一个虚拟节点即可,返回时返回dummy->next。
lexingsen
2022/02/24
1.8K0
从DataFrame中删除列
在操作数据的时候,DataFrame对象中删除一个或多个列是常见的操作,并且实现方法较多,然而这中间有很多细节值得关注。
老齐
2021/03/29
7.4K0
在Vim/Vi中删除行、多行、范围、所有行及包含模式的行
使用linux服务器,免不了和vi编辑打交道,命令行下删除数量少还好,如果删除很多,光靠删除键一点点删除真的是头痛,还好Vi有快捷的命令可以删除多行、范围。
子润先生
2021/06/24
111.9K0
【iOS】基于Realm数据库的记账软件--Realm数据库(一)
</br> 以上,就是该项目的所有数据库表。实际项目会因业务需求,追加一些字段,但核心还是不变的。
MapleYe
2020/03/31
1.5K0
【iOS】基于Realm数据库的记账软件--Realm数据库(一)
iOS开发中删除NSUserDefaults中所有记录
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/80256929
用户1451823
2018/09/13
1.1K0
iOS开发中删除NSUserDefaults中所有记录
从表里删除数据
$user->delete(6); //---------- $map['id']=6; $user->where($map)->delete();
PM吃瓜
2019/08/12
6300
Bloom Filter Bitmap 快速判断数据是否在集合中
一、给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中? 首先申请512M的内存,512M的内存可以存储2^29B = 2^32 * 2 bit = 1G内存 然后实现一个bitmap就是用1/0表示当前位数据是否存在 每个数分配1bit 。读入40亿个数,设置相应的bit位,读入要查询的数查看相应bit位是否为1,为1表示存在,为0表示不存在。 二、在2.5亿个整数中找出不重复的整数,内存空间不足以容纳这2.5亿个整数。 这次我们采用2-
Tim在路上
2020/08/04
1K0
在AIX下误操作删除LV后如何最大程度挽救数据?
今天北亚小编为大家分享一篇《在AIX下误操作删除LV后如何最大程度挽救数据?》首先大家要知道到底是LV?PV相当于物理磁盘(对于存储,是存储映射过来的卷,对于操作系统而言,等同于物理硬盘),若干个PV组成一个VG,意味着可以将容量不同的存储空间合起来统一分配。为了实现这个目的,AIX把同一个VG的所有PV按相同大小的存储颗粒进行空间编排,这个存储颗粒就是PP。而分配空间时,以若干个PP(可能是不同PV上的),做为使用集合,这个集合就是LV。
北亚数据安全与救援
2021/04/13
1.4K0
从lvm中删除硬盘、分区
本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/article/remove_disk_from_lvm/
羽翰尘
2019/11/20
7.1K0
ElasticSearch5.x 删除数据
首先要说明的是ElasticSearch从2.x开始就已经不支持删除一个type了,所以使用delete命令想要尝试删除一个type的时候会出现如下错误:
我的小碗汤
2018/09/30
2.4K0
ElasticSearch5.x 删除数据
Android 判断是否在通话中
转载请以链接形式标明出处: 本文出自:103style的博客 最后的判断代码: /** * 是否正在电话通话中 */ private boolean phoneIsInUse() { TelephonyManager mTelephonyManager = (TelephonyManager) activity.getSystemService(Context.TELEPHONY_SERVICE); int state = mTelephonyManager.getCallSt
103style
2022/12/19
1.4K0
【DB笔试面试641】在Oracle中,新建索引后统计信息是否自动收集?
在Oracle 10g后有个隐含参数“_OPTIMIZER_COMPUTE_INDEX_STATS”,意思是是否对新建索引收集统计信息,该参数默认是TRUE,表示默认收集新建索引的统计信息。
AiDBA宝典
2019/09/29
9000
如何快速删除程序中的所有注释
前段时间,因为新冠肺炎的影响,美国的一家医疗器械公司——美敦力,公开了自家公司的一台呼吸机的设计源文件。包括原理图、BOM、源代码、CAD文件等。
MCU起航
2020/06/29
6.8K0
如何在Linux中删除目录的所有文件?
在Linux操作系统中,删除目录的所有文件是一项常见任务。无论是清理不需要的文件还是准备删除整个目录,正确地删除目录下的所有文件是重要的。本文将详细介绍如何在Linux中删除目录的所有文件,包括使用常见的命令和技巧进行操作。
网络技术联盟站
2023/06/08
17.9K0
如何在Linux中删除目录的所有文件?
在clickhouse中更新和删除
ck 目前支持了更新和删除,但是与传统sql语法 略有不同,我也记录下来,防止后面忘记。
用户1217611
2021/12/31
3K0
点击加载更多

相似问题

X小时后从云存储中删除媒体

12

realm android删除所有数据

51

24小时后从Mysql中删除数据

21

Realm在删除PrimaryKey后未更改配置

16

Android Realm -删除后返回RealmObject

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档