我可以在协议中有一个init函数吗?
当我试图通过这种方式来实现我的协议:
protocol Serialization { func init(key keyValue: String, jsonValue: String) } 我得到一个错误说: 函数声明中的预期标识符。
为什么我得到这个错误?
 是的你可以。 但是你从来没有把func放在init : 
 protocol Serialization { init(key keyValue: String, jsonValue: String) } 
要点在这里:
-  协议和实现它的类在init方法之前从不具有关键字func。
-  在你的类中,由于你的协议中调用了init方法,所以你现在需要在init方法的前面添加required的关键字。 这表明你遵守的协议要求你有这个init方法(即使你可能独立地认为这是一个好主意)。
正如其他人所说,你的协议看起来是这样的:
 protocol Serialization { init(key keyValue: String, jsonValue: String) } 
作为一个例子,符合这个协议的类可能看起来像这样:
 class Person: Serialization { required init(key keyValue: String, jsonValue: String) { // your logic here } } 
 注意init方法前面的必需关键字。