是否可以通过CLBeaconRegion
将数组添加到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.'
答案 0 :(得分:1)
setValue:forKey:
是一种KVC方法,基本上可用于每个类 - 但这并不意味着您可以只传递任何内容。你使用的密钥需要是一个现有的属性(嗯,实际上是一个被调用的方法,或一个处理不存在的密钥)。无论如何,重点是在尝试设置之前你应该知道密钥存在。
从技术上讲,您可以使用objc_setAssociatedObject
将任意对象与其他对象相关联,但在这种情况下,我建议您改为使用major
和minor
属性来检查区域的用途在决定如何显示警报之前。
答案 1 :(得分:1)
不,你不能这样做。如果要将其他数据与CLBeaconRegion关联,则可以使用其他数据结构,如NSDictionary。由于每个CLBeaconRegion都使用唯一的“标识符”字符串构造,因此您可以将此标识符用作NSDictionary中的键来存储其他任意数据对象。
此外,您不应该在构造后更改CLBeaconRegion。字段是不可变的。这不是什么大不了的事 - 只有三个领域。只需创建一个新的CLBeaconRegion,复制您希望保留的旧CLBeaconRegion中的任何标识符。