Col*_*ral 10 frameworks nested objective-c swift
我有Geography.framework(一个Swift框架项目)包含的以下类:
public class Contact : NSObject
{
public static let Table: String = "contacts"
public class Fields : NSObject
{
public static let Id: String = "_id"
public static let Name: String = "name"
static let rawId: String = "rawId"
}
}
public class Country : NSObject
{
public class Fields : NSObject
{
public static let Id: String = "_id"
public static let Prefix: String = "prefix"
static let rawId: String = "rawId"
}
}
Run Code Online (Sandbox Code Playgroud)
在我使用此框架的快速应用程序中,一切运行顺利:
import geography
func setFields()
{
var contactName:String = Contact.Fields.Name
var countryPrefix:String = Country.Fields.Prefix
var contactsTable: String = Country.Table
}
Run Code Online (Sandbox Code Playgroud)
好吧,如果我在ObjectiveC中使用相同的Geography.framework,我会看到Contact和Country类,但看不到嵌套类Fields.此外,没有看到Contact.Table的值.
我需要做什么才能在ObjectiveC中拥有相同的库结构和库使用?
谢谢,
您必须在此处明确定义ObjC。
public class Country: NSObject {
@objc(CountryFields) public class Fields: NSObject {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
这会将您的ObjC的Country.Fields
Switf暴露为CountryFields
。我尚未测试过,但我相信您不必明确继承自NSObject
。@objc
属性应在编译时为您完成。
Swift 3更新:
看起来这在Swift 3中已被破坏,无法修复。https://bugs.swift.org/browse/SR-2267?focusedCommentId=21033&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-21033