[英]Using NSClassFromString() on a Swift declared class requires a fully qualified name
我有一个问题,在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已经有点身份危机。 我们只希望保留表名以及程序员将使用的类名。
在此先感谢您的帮助。
烦人的是,我在发布此内容后就偶然发现了答案(尽管搜索了数小时)。
您必须将@objc(SwiftClassName)
放在您的swift类之上。
喜欢:
@objc(SubClass)
class SubClass: SuperClass {...}
这样,您所有的原始Objective-c代码都将看到这些类,而不会尝试对其进行任何时髦的处理!
感谢@klaus
原始帖子可以在这里找到:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.