我有一个问题,在Swift中,我定义了一个名为Person的类,当与一些目标-c代码交谈时,它将尝试创建该类的新实例。
显然,NSClassFromString(@"Person")失败了,因为它需要是一个完全限定的名称,比如DBAccess_Test.Person.。
我的问题是,我是否能够通过搜索类的注册表来编程地生成DBAccess_Test.部分?
原因是,对于我们维护的ORM,Swift程序员很可能决定在应用程序的单独名称空间中拥有他的所有存储类。但是,我们希望维护与开发人员理解的类名相匹配的标准表命名实践。
例如,代替查询的是:
NSArray* r = [[[[Person query]
where:@"surname IN (SELECT surname FROM Employees)"]
orderBy:@"forename"]
fetch];
它将成为:
NSArray* r = [[[[Person query]
where:@"surname IN (SELECT surname FROM DBAccess_Test_Employees)"]
orderBy:@"forename"]
fetch];
ORM已经有点身份危机了。我们只希望检查表名和程序员将要使用的类名。
提前感谢您的帮助。
发布于 2015-03-31 21:25:25
令人恼怒的是,我一发布这篇文章(尽管搜索了几个小时),我就无意中发现了答案。
你必须把@objc(SwiftClassName)
放在你的快速课程之上。
比如:
@objc(SubClass)
class SubClass: SuperClass {...}
然后,所有原始的目标-c代码都会看到这些类,而不会尝试对它们做任何奇怪的事情!
感谢克劳斯
在这里可以找到原始的帖子:
https://stackoverflow.com/questions/29378508
复制相似问题