我有一个问题,在Swift中我有一个名为Person的类,在与一些Objective-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已经有一点身份危机。我们只想检查表名,以及程序员将使用的类名。
先谢谢你的帮助。
答案 0 :(得分:0)
令人讨厌的是,我发布这篇文章时偶然发现了答案(尽管搜索了几个小时)。
你必须把@objc(SwiftClassName)
放在你的快速课程之上
喜欢:
@objc(SubClass)
class SubClass: SuperClass {...}
然后你所有的原始Objective-c代码都会看到这些类,而不是试图用它们做任何时髦的事情!
感谢@klaus
原帖可以在这里找到: