草庐IT

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

我正在构建一个消息传递应用程序。每当发生插入/删除/读取消息等任何操作时,我都会通过sqlite触发器更新数据库中的角标(Badge)计数。目前,虽然数据库中的值更新是异步发生的,但我无法在我的应用程序中的值发生变化时得到通知,因此我需要定期轮询。有什么方法可以在数据库值上设置观察者/在给定值更改时发布一些通知?我知道我可以很容易地做到这一点,方法是首先更新内存中属性中的角标(Badge)计数,然后将更改保存到数据库中;但我不太倾向于这样做,因为要更改此值的入口点太多,而且我不想在任何地方都添加SET属性。 最佳答案 一个可能的选择

ios - 使用 KVO 时出现 NSInternalInconsistencyException

我正在尝试使用从iPhone教程书中获得的KVO示例,但出现此异常Terminatingappduetouncaughtexception'NSInternalInconsistencyException',reason:':An-observeValueForKeyPath:ofObject:change:context:messagewasreceivedbutnothandled.Keypath:dataUpdatedObservedobject:Change:{kind=1;}Context:0x0'Callstackatfirstthrow:(0CoreFoundation0

ios - UIViewController - 查看事件生命周期并注册 KVO/通知

我想知道是否有任何方法可以在没有匹配的-viewDidAppear:的情况下调用-viewWillAppear:。-viewWillDisappear和-viewDidDisappear同上。我的问题的根源是在哪里注册和取消注册KVO和/或对象的NSNotifications,更改通知将导致ViewController更新View。例如,我有一个异步处理的模型对象,它的字符串属性可能会改变。我希望ViewController对这些属性进行KVO,并通过换出由所述ViewController管理的标签文本来反射(reflect)任何更改。您在哪里注册和注销通知,为什么?编辑:我遇到的一个

ios - KVO和NSNotificationCenter的正确用法和区别是什么?

这个问题在这里已经有了答案:NSNotificationVSKVO(1个回答)关闭8年前。KVO和NSNotificationCenter都可以处理值的变化。它们之间有什么区别?它们的正确用法是什么?

ios - 在没有调用 viewDidLoad 的情况下调用 Dealloc(删除 KVO 观察器时崩溃)

我正在使用UITabBarController,我的第3个选项卡在单例数据存储上观察数组(在viewDidLoad中实现)。目前,如果我只是注销(并从AppDelegate更改RootViewController),当在第3个选项卡上调用dealloc并显示消息“无法删除关键路径“X”的观察者,因为它未注册为观察者。使用断点,我看到从未在第3个选项卡上调用viewDidLoad,但是在我注销时调用了dealloc。到底是怎么回事?我假设UITabBarController在我进入Storyboard时持有对第三个选项卡的引用,但不会“加载”该选项卡。然而,当我释放标签栏Controll

objective-c - 具有多个观察者的单例的 KVO?

我目前正在考虑当我的单例属性发生变化时是使用KVO还是NSNotifications来提醒我的iOS应用程序中的多个对象。由于所有需要通知更改的对象都有对单例的引用,KVO似乎是自然的解决方案。但是,我从未将KVO与单例和多个观察者一起使用,所以我不知道这种模式是否可取甚至可能。在具有多个观察者的单例上使用KVO是一个好主意(甚至可能)吗? 最佳答案 当你可以等待事件循环时使用NSNotifications。当您需要立即响应状态变化时使用KVO。 关于objective-c-具有多个观察

objective-c - KVO for one-to-many but NSNull object passed into observeValueForKeyPath

我有一个与成员类具有一对多关系的托管对象。当我为成员添加观察员时,它起作用了。当一个新成员被添加到关系中时,将使用新对象调用observeValueForKeyPath并更改包含新成员对象的字典。但是,将第二次触发observeValueForKeyPath,所有值为nil并更改字典new="NULL"。第二个触发点是什么?我设置了一个断点,但不确定是谁触发的。@interfaceFooObject:NSManagedObject{}@property(nonatomic,strong)NSString*fooId;@property(nonatomic,strong)NSSet*me

ios - NSOperation KVO 已完成

我正在尝试子类化NSOperation,并从中读取一些样本,他们说:任务完成后,使用NSOperation的KVO来完成操作,代码在这里:[selfwillChangeValueForKey:@"isFinished"];[selfwillChangeValueForKey:@"isExecuting"]finished=YES;executing=NO;[selfdidChangeValueForKey:@"isFinished"];[selfdidChangeValueForKey:@"isExecuting"];然后调用isFinished-(BOOL)isFinished{re

objective-c - KVO 不适用于类属性

我想了解iOS中的键值观察,但我认为我做的事情不正确。作为一个想法,我尝试将观察者添加到ViewController的属性(与IBOutlet连接的View)。这个View(tableIndicator)是动画的,所以我想看看我是否能让观察者在View的框架发生变化时使用react。所以我在ViewController的viewDidLoad中执行了以下操作:[tableInidicatoraddObserver:selfforKeyPath:@"frame"options:0context:nil];tableIndicator是我的View/类属性,我添加ViewControlle

objective-c - UITABViewController中两个UIViewControllers之间的KVO机制

我是iPhone新手。我正在尝试实现KVO机制。我有什么?两个TabController有两个UIViewController,FirstViewController有一个按钮,SecondViewController有一个UITextView我想要什么?当在firstViewController中按下按钮时,它会更新成员变量,这应该被secondViewController观察到,并且它应该附加到UITextView。我做了什么?FirstViewController.h@interfaceFirstViewController:UIViewController{IBOutletUI