ios - 通过KVO观察数据库值的变化

标签 ios sqlite key-value-observing

我正在构建一个消息应用程序。每当发生插入/删除/读取消息等任何操作时,我都会通过 sqlite 触发器更新数据库中的角标(Badge)计数。

目前,虽然数据库中的值更新是异步发生的,但我无法收到应用程序中值更改的通知,因此需要定期轮询。

是否有某种方法可以在数据库值上设置观察者/在给定值更改时发布一些通知?

我知道我可以通过首先更新内存中属性中的角标(Badge)计数,然后将更改保存到数据库来轻松完成此操作;但我不太愿意这样做,因为要更改此值的入口点太多,而且我不想到处添加 SET 属性。

最佳答案

一种可能的选择是定义一个触发器,仅在更新数据库中的特定值时调用该触发器。然后,触发器应该调用您在应用程序中创建的用户定义函数。您可以使用sqlite3_create_function函数将您自己的函数添加到SQLite。你的触发器会喜欢这样的东西:

CREATE TRIGGER some_trigger_name
AFTER UPDATE OF some_column ON some_table
FOR EACH ROW BEGIN
    SELECT my_custom_fuction();
END;

如果需要,您可以向函数传递 1 个或多个参数。

关于ios - 通过KVO观察数据库值的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16283498/

相关文章:

ios - objective-c KVO : object vs changeDictionary

ios - EKEventStore 删除事件抛出错误

java - 在 sqlite 上使用图像的更有效方法?

java - 如何使用警报对话框删除sqlite listview android中的项目

ios - Swift 中的 KVO AVPlayer.status

objective-c - 将 "self."添加到键路径有好处吗?

ios - SKScene 和 SKView 的暂停属性之间的区别

ios - Calabash-iOS 无法找到 AutomationInstrument.bundle(运行时错误)

ios - 我在 xcode 中有一个文本框,每当我尝试将它连接到应用程序无法构建的属性时

android - iOS SQLite 与 Android SQLite 等价物