1.注册 NIB 出现错误
// error:'registerNib(_:forCellReuseIdentifier:)' has been renamed to 'register' (_:forCellReuseIdentifier:)' 解决:根据提示将 registerNib 改为 register 即可 leftTextCell = self.contentTableView.register(UINib(nibName:"ChatLeftTextMessageTableViewCell", bundle: nil), forCellReuseIdentifier:"ChatLeftTextMessageTableViewCell") // 但是还报错
error:'register' produces 'Void' (aka '()'), not the expected contextual type 'xxx'
将其改为:
// 在 viewDidLoad 中改为:
let nib = UINib(nibName: "ChatLeftTextMessageTableViewCell", bundle: nil) // nibName指的是我们创建的Cell文件名
self.contentTableView?.register(nib, forCellReuseIdentifier: "ChatLeftTextMessageTableViewCell") // 在 cellForRowAt indexPath: 加上这几行代码: let cellIdentifier = "ChatLeftTextMessageTableViewCell" leftTextCells = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as?
ChatLeftTextMessageTableViewCell
2. swift 中的类方法在 OC 中调用
@objc class GroupSettingTableViewController: UITableViewController { @objc class func isDisturb(originId: String ?) -> Bool? { } } // 在 OC 中调用时会报错,因为 OC 中没有可选这个知识点,还有 swift 方法中如果有枚举、结构体也不能在 OC 中使用,因为它们与 OC 中的不同
修正为:
@objc class GroupSettingTableViewController: UITableViewController {
@objc class func isDisturb(originId: String ) -> Bool {
let gstvc = GroupSettingTableViewController()
gstvc.groupId = originId
gstvc.reloadGroupNoDisturb()
if let b = gstvc.isDisturb {
return b
}
return false } }