Возможно ли вернуть тип класса из функции?Swift - экземпляр класса из типа, возвращаемого функцией
Я пытаюсь сделать что-то вроде этого:
func giveMeAClass() -> AnyClass {
return String.self
}
let theClass = giveMeAClass()
let instantiatedFromTheClass = theClass()
let castedFromTheClass = someObject as! theClass
EDIT:
Другой пример, когда я пытаюсь сделать что-то более полезное
class BaseModel {
var baseProperty: String!
}
class TextModel: BaseModel {
var textProperty: String!
}
class DateModel: BaseModel {
var dateProperty: NSDate!
}
class BaseCell<T: BaseModel>: UITableViewCell {
var model: T!
}
class TextCell: BaseCell<TextModel> {
}
class DateCell: BaseCell<DateModel> {
}
func getCellTypeForModel(model: BaseModel) -> ??? {
if model is TextModel {
return TextCell.Type // ???
}
else if model is DateModel {
return DateCell.self // ???
}
return BaseCell.somethingElse // ???
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let model = cellModels[indexPath.item] as! BaseModel
let cellType = getCellTypeForModel(anyModel)
let castedCell = tableView.dequeueReusableCellWithIdentifier("identifier", forIndexPath: indexPath) as! cellType
// give the model to the cell, customize it, etc
return castedCell
}
'String' не является классом. Это значение-тип. –