Ios 如何捕获CoreData警告?
我在练习BDD。我有一个名为Ios 如何捕获CoreData警告?,ios,core-data,tdd,bdd,nsvaluetransformer,Ios,Core Data,Tdd,Bdd,Nsvaluetransformer,我在练习BDD。我有一个名为Foobar的实体,它包含一个名为qux的可转换属性,我(使用核心数据模型编辑器)将其指定为quxtobazTransformer。关键是,QuuxtoazTransformer不存在。核心数据应该通过我的测试,并告诉我需要实现它 令人惊讶的是,测试通过了:myFoobar似乎已经存储,核心数据只是作为警告告诉我: 如何捕获此警告并使其成为测试失败?我不知道您是否可以捕获此警告。不过,您可以通过执行以下操作来测试值转换器的存在性 使用entitiesByName方法从
Foobar
的实体,它包含一个名为qux
的可转换属性,我(使用核心数据模型编辑器)将其指定为quxtobazTransformer
。关键是,QuuxtoazTransformer
不存在。核心数据应该通过我的测试,并告诉我需要实现它
令人惊讶的是,测试通过了:myFoobar
似乎已经存储,核心数据只是作为警告告诉我:
如何捕获此警告并使其成为测试失败?我不知道您是否可以捕获此警告。不过,您可以通过执行以下操作来测试值转换器的存在性
entitiesByName
方法从模型中获取所有实体的列表NSEntityDescription
attributesByName
获取实体描述中的所有属性NSAttributeDescription
上的valueTransformerName
在使用它的属性上获取值转换器类的名称NSClassFromString
验证值转换器类是否存在entitiesByName
返回的每个实体,然后遍历attributesByName
返回的每个属性(而不是按名称查找已知实体和属性)。每当您找到一个值转换器时,检查该类是否存在(我猜,它是NSValueTransformer
的子类),以确定测试是否应该通过
xctest[99290:303] CoreData: warning: no NSValueTransformer with class name
'QuuxToBazTransformer' was found for attribute 'quux' on entity 'Foobar'