gpt4 book ai didi

swift - NSKeyedArchiver 不会存档以枚举为值的简单字典

转载 作者:搜寻专家 更新时间:2023-11-01 07:06:40 30 4
gpt4 key购买 nike

我正在尝试使用 NSKeyedArchiver 来“归档”一个简单的字典。键是 String 类型,值是 enum

以下示例说明了我正在尝试做的事情:

import Foundation

enum Friend: String, Codable {
case Ben, Max
}

let friends: [String: Any] = [ "bestFriend" : Friend.Ben ]
let archivedFriends = NSKeyedArchiver.archivedData(withRootObject: friends)

可以将此代码复制到 playground 中,结果将出现以下错误:

error: Execution was interrupted, reason: signal SIGABRT.

遗憾的是,我无法复制堆栈跟踪,所以我不得不创建一个屏幕截图:

Stack Trace

为了测试 enum 确实是问题所在,我将代码更改为以下内容:

import Foundation

let friends: [String: Any] = [ "bestFriend" : "Ben" ]
let archivedFriends = NSKeyedArchiver.archivedData(withRootObject: friends)

这行得通,所以问题是:

在让 NSKeyedArchiver 使用给定字典的第一个代码示例中,我缺少什么?

最佳答案

使用原始值而不是直接使用枚举。

let friends: [String: Any] = [ "bestFriend" : Friend.Ben.rawValue]
let archivedFriends = NSKeyedArchiver.archivedData(withRootObject: friends)

关于swift - NSKeyedArchiver 不会存档以枚举为值的简单字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47642497/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com