1

CLBeaconRegion是否可以通过 a将 Array 添加到a setValue forKey

我试图添加它:

[regionAdvert setValue:haveArray forKey:@"advertArray"];

但我只收到以下错误:

> Terminating app due to uncaught exception 'NSUnknownKeyException',
> reason: '[<CLBeaconRegion 0x15379600> setValue:forUndefinedKey:]: this
> class is not key value coding-compliant for the key advertArray.'
4

2 回答 2

1

setValue:forKey:是一种KVC方法,基本上每个类都可以使用 - 但这并不意味着您可以将任何东西传递给它。您使用的密钥必须是现有属性(嗯,实际上是一种方法,因为它是被调用的方法,或者是已处理的不存在的密钥)。无论如何,关键是您应该在尝试设置密钥之前知道密钥存在。

从技术上讲,您可以使用objc_setAssociatedObject将任意对象与其他对象相关联,但在这种情况下,我建议您改为使用majorminor属性来检查区域的用途,然后再决定如何显示警报。

于 2013-10-21T19:09:50.613 回答
1

不,你不能这样做。如果要将其他数据与 CLBeaconRegion 相关联,则可以使用其他数据结构,例如 NSDictionary。由于每个 CLBeaconRegion 都是用唯一的“标识符”字符串构造的,因此您可以将此标识符用作 NSDictionary 的键来存储您的其他任意数据对象。

此外,您不应该在构建后更改 CLBeaconRegion。字段是不可变的。这没什么大不了的——只有三个字段。只需创建一个新的 CLBeaconRegion,复制您希望保留的旧 CLBeaconRegion 中的任何标识符。

于 2013-10-22T03:11:20.897 回答