ios - 类对于键 staticTexts 不符合键值编码

标签 ios swift nspredicate

我有这个错误:XCTAssertTrue failed: throwing "[<XCElementSnapshot 0x7fea978b1a10> valueForUndefinedKey:]: this class is not key value coding-compliant for the key staticTexts."

代码如下:

let predicate = NSPredicate(format: "(self.staticTexts[%@].exists == true) AND (self.staticTexts[%@].exists == true)", message, nameString)
XCTAssert(app.collectionViews.childrenMatchingType(.Cell).elementMatchingPredicate(predicate).exists)

第二行抛出错误。

我已经查看了关于 SO 的其他答案,但出现了同样的错误,这主要是由于具有不同类的变量引起的,但是我在这里看不到出现此错误的可能性。另外,我检查了谓词的格式是否正确。

我怎样才能摆脱这个错误?

最佳答案

确保您的 staticTexts 属性是dynamic 或以其他方式可用于 objc(例如将其标记为 @objc)。 Swift 不会生成符合 KVC 的访问器,除非它认为有必要。

或者,在这里使用 NSPredicate 以外的东西。在不需要时使属性动态化会降低性能,这就是 Swift 不会自动执行此操作的原因。因此,将其标记为 dynamic 以便单元测试可以访问它可能是一个糟糕的权衡。

关于ios - 类对于键 staticTexts 不符合键值编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31323632/

相关文章:

objective-c - NSPredicate 根据父实体的属性搜索子实体实例

ios - Facebook 图表 API : Event timezone, 时间

swift - GMS反向地理编码坐标返回statusCode 400错误

ios - 我们如何解决 iOS 上的 AXSpeechAssetDownloader 错误?

xcode - 检查对象类型 ios swift

ios - (Swift) 在 for 循环中使用带有 NSURLSession 的信号量

ios - 如何按 nspredicate 日期过滤 SQL 结果?

ios - 核心数据与完整数据存储的子集一起工作...如何?

objective-c - 将一个目录的内容移动到另一个目录(iOS)

ios - apple mach-o linker error 链接器命令失败,退出代码为 1(使用 -v 查看调用)