相关疑难解决方法(0)

是否可以在目标C中为静态变量设置KVO通知?

我有A类,实例变量从缓存的数据派生属性,该缓存的数据表示为单例,并且是A的一部分(本质上是NSDictionary)。有时会修改此缓存。

发生这种情况时,我希望所有A实例在下次访问其属性时都从缓存中提取新信息,或者换句话说,使它们的属性内容无效。

到目前为止,手动通知每个实例(使用静态数组跟踪成员)。我不是粉丝。通知中心可能有一个选项,但是我宁愿尝试使用KVO。

有没有人设法从iOS的类变量订阅KVO更改?(换句话说,使用对静态变量A的更改来告诉A实例刷新其数据。)

换句话说,我很想拥有

static void* context = &context;
static myHadHocObject* msignal;
Run Code Online (Sandbox Code Playgroud)

然后在A类代码中

[msignal addObserver:self forKeyPath:@"operation" options:NSKeyValueObservingOptionNew context:context];
Run Code Online (Sandbox Code Playgroud)

并通过通知类实例中的msignal更改

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{

}
Run Code Online (Sandbox Code Playgroud)

我试过使用各种had hoc类,但是没有运气。似乎我缺少了一些东西。

指针是受欢迎的,谢谢!

design-patterns objective-c key-value-observing ios

6
推荐指数
1
解决办法
1321
查看次数

NSUnknownKeyException:被发送到与"player"属性不符合KVC的对象

我已将代码更新为Xcode 9中的swift 4.在此之前它运行正常.但现在AVplayer在下面的观察者身上崩溃的是崩溃的代码.

  addObserver(self, forKeyPath: "player.currentItem.duration", options: [.new, .initial], context: &playerViewControllerKVOContext)
Run Code Online (Sandbox Code Playgroud)

而日志是

因未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[addObserver:forKeyPath:@"player.currentItem.duration"options:5 context:0x10ff74ac8]被发送到与"player"属性不符合KVC的对象".

kvc swift4 ios11 xcode9

6
推荐指数
1
解决办法
2018
查看次数

单身财产的KVO?

大家好,我正在尝试在Singleton类中的一个字符串属性上实现KVO.我在尝试添加观察者时遇到了一些错误,并希望有人能告诉我我做错了什么.下面显示了我的单身人士课程.

class User: NSObject {

    static let currentUser = User()
    private override init() {}

    var pictureString: String?
}
Run Code Online (Sandbox Code Playgroud)

在一个单独的ViewController的viewDidLoad中,我试图像这样在pictureString变量中添加一个观察者.

    self.addObserver(self, forKeyPath: #keyPath(User.currentUser.pictureString), options: [.old, .new, .initial], context: nil)
Run Code Online (Sandbox Code Playgroud)

我现在正在处理的问题是它声明currentUser不符合KVC标准.我目前收到以下错误.

    addObserver: forKeyPath:@"currentUser.pictureString" options:7 context:0x0] was sent to an object that is not KVC-compliant for the "currentUser" property.'
Run Code Online (Sandbox Code Playgroud)

我很感激任何帮助谢谢.

singleton key-value-observing ios kvc swift

3
推荐指数
1
解决办法
1067
查看次数