Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 整数属性的观察者_Ios_Objective C_Key Value Observing - Fatal编程技术网

Ios 整数属性的观察者

Ios 整数属性的观察者,ios,objective-c,key-value-observing,Ios,Objective C,Key Value Observing,我得到了一个整数属性,该值在运行时可能会更改。因此,如果此值已更改,我希望将此属性注册到观察者,以便接收通知和调用方法。我已经知道了,但据我所知,这只适用于NSObjects,而不适用于整数。在我的.h中,我创建了@property int-activePlayer 这就是我在我的viewDidLoad [self.activePlayer addObserver:playerChangedObserver forKeyPath:@"activePlayer"

我得到了一个整数属性,该值在运行时可能会更改。因此,如果此值已更改,我希望将此属性注册到观察者,以便接收通知和调用方法。我已经知道了,但据我所知,这只适用于
NSObjects
,而不适用于整数。在我的
.h
中,我创建了
@property int-activePlayer

这就是我在我的
viewDidLoad

[self.activePlayer addObserver:playerChangedObserver
          forKeyPath:@"activePlayer"
             options:(NSKeyValueObservingOptionNew |
                      NSKeyValueObservingOptionOld)
             context:NULL];
希望得到一些帮助。谢谢

更新

也许你需要一些额外的信息。
.h
.m
正在实现一个
UIViewController
,其中我使用了一个flick手势。如果手势弱,则
int
为1,如果手势强一点,则将变为
2
。在我的项目中,使用这个变量是有意义的,所以我不能删除它

我将观察员注册更改为:

[self addObserver:self
              forKeyPath:@"activePlayer"
                 options:(NSKeyValueObservingOptionNew |
                          NSKeyValueObservingOptionOld)
                 context:NULL];

第一个
self
是观察对象,属性来自该对象。键路径是属性和我使用的第二个
self
,因为如果键发生更改,它也应该接收消息。我误解了吗?

你真的试过这个代码吗?用于观察的键值用于integer属性。它进一步说明了这一点

如果属性是标量或C结构,则将值包装在NSValue对象中(与键值编码一样)


因此,您需要先将其解包,然后才能对其执行任何操作,但它应该按原样工作。

您是否确实尝试过此代码?用于观察的键值用于integer属性。它进一步说明了这一点

如果属性是标量或C结构,则将值包装在NSValue对象中(与键值编码一样)


因此,您需要先将其解包,然后才能对其执行任何操作,但它应该按原样工作。

您应该在.m中实现它

observeValueForKeyPath:ofObject:change:context:
你应该使用

self.activePlayer = 1;

要设置“activePlayer”属性,应在.m中实现

observeValueForKeyPath:ofObject:change:context:
你应该使用

self.activePlayer = 1;

要设置“activePlayer”属性,您搜索了吗?Try:是的,但由于我没有处理不同的对象,此解决方案对我不起作用。您搜索了吗?尝试:是的,但由于我没有处理不同的对象,这个解决方案对我不起作用。这应该如何解决我的问题?我实现了observeValueForKeyPath:ofObject:change:context:
方法,但显然肯定有问题。这应该如何解决我的问题?我实现了object:change:context:的
observeValueForKeyPath:ofObject:change:context:
方法,但显然一定是出了什么问题。该方法中存在一个问题,我更新了
activePlayer
,因此我问题中的更新部分工作得非常好。感谢这只是方法中的一个问题,我更新了
activePlayer
,所以我的问题中的更新部分工作得很好。谢谢