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 - 无法使用较早的单元测试配置在 Xcode 8 中运行单元测试

ios - UIAlertView 首先弃用 IOS 9

sqlite - 在SQLite中实现/使用外键?

macos - 如何在 Mac OS X Lion 上安装 Sqlite3

objective-c - 绑定(bind)到 NSArrayController 的arrangedObjects 显示一个左括号

ios - NSManagedObject 时间戳更新

ios - 如何同时更改 iOS 按钮的图像和文本?

ios - UIview 中的两个 TableView fatal error

sqlite - SQLite System.InvalidOperationException

ios - [iOS]KVO setValuesForKeysWithDictionary