rob*_*rob 5 core-data objective-c ios restkit
我有一个NSManagedObject.当我创建一个实例时,它意外地失败了isKindOfClass方法.
NSEntityDescription *entity = [NSEntityDescription entityForName:@"DayModel" inManagedObjectContext:context];
DayModel *day = [[DayModel alloc] initWithEntity:entity insertIntoManagedObjectContext:context];
if ([day isKindOfClass:[DayModel class]]) {
NSLog(@"True");
} else {
NSLog(@"False");
}
Run Code Online (Sandbox Code Playgroud)
输出:
False
Run Code Online (Sandbox Code Playgroud)
我添加了以下代码:
Class objectClass = [day class];
Class classClass = [DayModel class];
Run Code Online (Sandbox Code Playgroud)
在调试器中查看它,这是我发现的:

打印classClass打印"DayModel" 的描述.
我不确定这是否相关,但DayModel是在Swift中实现的.
UPDATE
这在我的测试类中失败了,但在iOS应用程序中没有.问题似乎与此问题类似.但是,我已经将所有类都添加到了测试目标中,但它仍然失败了.
我刚遇到同样的问题.
在我的情况下的问题实际上并不是我错过了测试项目中的源文件,正如您在更新中提到的链接:isKindOfClass意外返回NO
根本原因是由于太多源文件具有相同的类.在您的测试目标中,您可能对包含应用程序的目标具有目标依赖性,即您已经包含源文件.
因此,请确保从"构建阶段"选项卡中的测试目标的"编译源"中删除包含您在isKindOfClass中使用的类的源文件.
(在你的情况下删除DayModel.m)
我在这里找到了我的问题的解决方案: isKindOfClass和NSStringFromClass不同意UIApplicationDelegate
似乎当具有相同类的多个源文件时,isKindOfClass具有奇怪的行为,因为它不能看到两个类是相同的.
| 归档时间: |
|
| 查看次数: |
808 次 |
| 最近记录: |