相关疑难解决方法(0)

我如何获得ivar的Objective-C类?

NSManagedObject在单元测试中创建了一堆简单的s.它们只有一个name类型的属性NSString *.我总是给我NSManagedObject相同entityNameClass名字.

我想避免编写以下代码30次来设置单元测试:

@interface FooTest : GHTestCase {
Foo *foo;
}
@end
@implementation FooTest

- (void) setUp {
  [super setUp];

  foo = [NSEntityDescription insertNewObjectForEntityForName:@"Foo"
                                      inManagedObjectContext:managedObjectContext];
  foo.name = @"foo";
}
@end
Run Code Online (Sandbox Code Playgroud)

既然foo是一个ivar,我认为我应该能够写一个宏来获取foo(Foo)的类型,并用来创建我的Foo:

#define InsertManagedObjectByVariable(variable) \
do { \
variable = [NSEntityDescription insertNewObjectForEntityName:NSStringFromClass([typeof(variable) class])]; \
variable.name = (NSString *) CFSTR(#variable);
} while(0)
Run Code Online (Sandbox Code Playgroud)

但是,这会在clang中导致以下警告:

variable = [NSEntityDescription insertNewObjectForEntityName:NSStringFromClass([typeof(variable) class])];
                                                                               ^
                                                             Expected expression
Run Code Online (Sandbox Code Playgroud)

我还以为我可以尝试确定使用Objective-C的运行时类型 …

c objective-c objective-c-runtime

5
推荐指数
2
解决办法
1825
查看次数

标签 统计

c ×1

objective-c ×1

objective-c-runtime ×1