Swift中如何初始化带可选Book参数的AF_PenName类?
正确初始化AF_PenName的两种方案
你的核心问题是:AF_PenName的初始化参数要求传入Book?类型的实例,但你传了Book这个类型本身,所以才会报错。根据你还没创建Book对象的情况,给你两种可行方案:
方案1:先创建Book实例再传入
如果业务逻辑需要关联一个实际的Book对象,先根据Book类的定义创建实例,再传给AF_PenName:
// 假设Book类的最简定义(如果有自定义初始化器就用对应的写法) class Book { var name: String init(name: String) { self.name = name } } // 1. 创建Book实例 let myBook = Book(name: "我的第一本书") // 2. 用实例初始化AF_PenName let myPenName = AF_PenName(book: myBook)
方案2:直接传入nil
因为参数是可选类型Book?,允许传入空值。如果暂时不需要关联Book对象,直接传nil即可:
let myPenName = AF_PenName(book: nil)
额外提醒
- 别再把
Book类型本身(比如写AF_PenName(book: Book))当参数传,必须传Book的实例或者nil。 - 如果Book类没有自定义初始化器,直接用
Book()就能创建一个空实例。
内容的提问来源于stack exchange,提问作者Author
相关产品推荐
相关产品推荐

