Swift 通用协议中的类型重写,给出;明确指定解决此问题的通用参数";错误

Swift 通用协议中的类型重写,给出;明确指定解决此问题的通用参数";错误,swift,swift3,swift4,Swift,Swift3,Swift4,我正在尝试将默认关联类型更改为字符串。但是得到这个错误 显式指定用于修复此问题的泛型参数 下面的代码适用于类型Int,但不适用于String。我错过什么了吗 //override/Change the associated Type of Protocol protocol Familiable{ associatedtype FamilyType = Int func getName()->[FamilyType] } class NumberFamily:Famil

我正在尝试将默认关联类型更改为字符串。但是得到这个错误

显式指定用于修复此问题的泛型参数

下面的代码适用于类型Int,但不适用于String。我错过什么了吗

//override/Change the associated Type of Protocol

protocol Familiable{
    associatedtype FamilyType = Int
    func getName()->[FamilyType]
}

class NumberFamily:Familiable{

    func getName() -> [Int] {
        return [1,2,3,4,5]
    }
}

let numRef = NumberFamily()
print(numRef.getName())
type(of: numRef)

struct NormalFamily<T:ExpressibleByStringLiteral>: Familiable{

    func getName() -> [T] {
        return ["name1","name2"]
    }

}

let normalRef = NormalFamily()
normalRef.getName() 
//覆盖/更改协议的关联类型
协议家族{
associatedtype FamilyType=Int
func getName()->[FamilyType]
}
班级编号家庭:家庭成员{
func getName()->[Int]{
返回[1,2,3,4,5]
}
}
设numRef=NumberFamily()
打印(numRef.getName())
类型(类型:numRef)
结构NormalFamily:可家族化{
func getName()->[T]{
返回[“名称1”、“名称2”]
}
}
设normalRef=NormalFamily()
normalRef.getName()

您说下面的代码适用于Int类型,但您的
NormalFamily
永远不适用于
Int
NormalFamily
总是导致编译时错误)。你是什么意思?是的,你是rite。我的意思是,它只适用于采用家庭协议的类NumberFamily。但它不适用于struct NormalFamily所采用的相同协议。我只想使这两种类型的协议都通用。