首页 > 解决方案 > 在视图控制器之间传递字典时出错:[__SwiftValue renderingMode]:

问题描述

我正在尝试通过 NotificationCenter 通过字典传递数据。这是我的代码。

搜索视图控制器:

func addBook() {
    let selectedBook = ["title": "A Guide to Bugs"]
    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "Pass.Book"), object: nil, userInfo: selectedBook])
}

@IBAction func goBack(_ sender: Any) {
    self.navigationController?.popViewController(animated: true)
}

主视图控制器:

var book: [String: String]!

override func viewDidLoad() {
    super.viewDidLoad()
    NotificationCenter.default.addObserver(self, selector: #selector(self.reload(_:)), name: NSNotification.Name("Pass.Book"), object: nil)
}

@objc func reload(_ notification: NSNotification) {
    let passedBook = ["title": (notification.userInfo?["title"] as! String)]
    self.book = passedBook
    self.settingsTableView.reloadData()
}

该行self.book = passedBook是导致问题的原因。出于某种原因,代码无法将传递的字典分配给加载视图时初始化的字典,这给了我这个错误。

[__SwiftValue renderingMode]:无法识别的选择器发送到实例 0x6000013c6d00

*** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__SwiftValue renderingMode]:无法识别的选择器发送到实例 0x600003f78780”

libc++abi.dylib:以 NSException 类型的未捕获异常终止

有谁知道如何修复这个错误?是我的代码有问题还是 Xcode 错误?

标签: iosswiftxcodedictionary

解决方案


推荐阅读