我需要这个操作 bsc 方法接收 id,并且我喜欢稍后使用点语法来设置对象。 目前我就是用这种方式做的。但也许有人知道更优雅的方式?
-(NSError *) updateObject:(id)object operation:(NSInteger)operation;
{
CurrentCompany *obj1 = nil;
...
CompanyStuff *obj2 = nil;
if ([[[(CurrentCompany *)object entity] name] isEqualToString:@"CurrentCompany"]) obj1 = (CurrentCompany *)object;
if ([[[(CompanyStuff *)object entity] name] isEqualToString:@"CompanyStuff"]) obj2 = (CompanyStuff *)object;
NSLog(@"UpdatedObject:%@",obj1);
最佳答案
如果这些类符合通用协议(protocol)或从声明属性的通用父类(super class)继承,则可以将变量静态键入为该协议(protocol)或父类(super class)。如果这两种情况都不是,那么它们似乎不应该被互换对待。
此外,这并不是真正相关的,但是从 id
到特定类的显式转换是没有意义的。您只需分配即可。
关于cocoa - 将类型从 id 更改为子类 nsmanagementobject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5942509/