我想这很简单,但我已经搜索了几个小时,仍然无法弄清楚我调用什么函数来执行此操作。
所以假设我有一个超类country
和三个这样的子类
class country {
}
class USA : country {
}
class China : country {
}
class France : country {
}
var countrys : [country] = []
我现在想将所有子类推入一系列国家/地区类
我在追加函数中调用什么?
countrys.append(contentsOf: )
任何提示都值得赞赏! :D
你想做的事情可以在Objective-C中使用内省,而在C++中使用在程序开始时运行的静态代码。但是,这在 Swift 中是不可能的。
虽然您无法自动获得某些事情,但手动方法将起作用。
定义类,如下所示:
class Country {
static var countries = [Country.Type]()
static func addMe() { Country.countries.append(self) }
}
class USA : Country {
}
class China : Country {
}
class France : Country {
}
在某些初始化代码调用中:
USA.addMe()
France.addMe()
China.addMe()
然后打电话给print("Country.countries (Country.countries)")
会给你:
Country.countries [Module.USA, Module.France, Module.China]
如果这真的需要自动完成,请查看您可以在 Objective-C 中做什么,并Country
成为 NSObject
的子类。
不需要、不需要或不需要目标 C。 您可以以尽可能小的方式创建这样的Country
数组,具体取决于它们是只读的还是读写的。
class Country {}
class USA: Country {}
class China: Country {}
class France: Country {}
var countries = [Country]()
countries.append(USA())
countries.append(China())
countries.append(France())
let moreCountries = [France(), China(), USA()]
但是,为每个可能的国家/地区创建单独的子类型是对类型系统的表面值的误用。这是一个更惯用的替代答案。但这是一个设计问题,取决于未提供的细节。
class Country {
let name: String
}
var countries = [Country]()
countries.append(Country(name: "USA"))
countries.append(Country(name: "China"))
countries.append(Country(name: "France"))
let moreCountries = [Country(name: "France"), Country(name: "China"), Country(name: "USA"))
let usa = Country(name: "USA")
let china = Country(name: "China")
let france = Country(name: "France")
let evenMoreCountries = [china, france, usa]