Ios 如何向NSMutableDictionary添加键NSIndexPath和值BOOL?

Ios 如何向NSMutableDictionary添加键NSIndexPath和值BOOL?,ios,objective-c,nsmutabledictionary,key-value,nsindexpath,Ios,Objective C,Nsmutabledictionary,Key Value,Nsindexpath,可能重复: 我需要将键值对NSIndexPath->BOOL添加到NSMutableDictionary。我如何才能做到这一点?这对我来说真是个问题。我既不能使用setValue-forKey(因为键只能是NSString)也不能使用setObject-forKey(因为BOOL是一个原语,我不能使用[NSNumber-numberwhithbool:YES],还因为NSNumber是不可变的,我需要更改BOOL值)。 因此,问题是我如何添加这样一个键值对,以及我所有的限制。有什么想法吗?按照

可能重复:

我需要将键值对NSIndexPath->BOOL添加到NSMutableDictionary。我如何才能做到这一点?这对我来说真是个问题。我既不能使用
setValue-forKey
(因为键只能是NSString)也不能使用
setObject-forKey
(因为BOOL是一个原语,我不能使用
[NSNumber-numberwhithbool:YES]
,还因为NSNumber是不可变的,我需要更改BOOL值)。
因此,问题是我如何添加这样一个键值对,以及我所有的限制。有什么想法吗?

按照这个答案中的建议,用一个
NSNumber
将BOOL包装起来:

字典必须包含对象。这是没有办法的。一种方法是为需要操作的BOOL创建一个自定义getter和setter方法,以便它在字典中而不是在属性中获取和更新值。或者,如果需要保留属性引用,则需要使用KVO来保持两个值的同步,但这听起来像是一个反模式。如果您更详细地描述您的用例可能会有所帮助,但我认为这是您的两个选择。

我能说的最好一点是,布尔值可能会发生变化,因此,将其包装到NSNumber中不会反映NSNumber要指示的BOOL的最新状态……为什么在需要更改它时不能在字典中替换NSNumber?我的猜测(很多猜测都缺少细节…)是BOOL是对象上的属性或ivar。这就是为什么我认为这是一个反模式,如果有更多的信息,它会很容易被识别。。更改为1或0。Bam是最简单的方法