我正在构建一个消息应用程序。每当发生插入/删除/读取消息等任何操作时,我都会通过 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/