繁体   English   中英

在Swift声明的类上使用NSClassFromString()需要完全限定的名称

[英]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

原始帖子可以在这里找到:

https://stackoverflow.com/a/24448786/846035

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM