Swift3 NSKeyedArchiver.archivedData因NSDictionary对象而崩溃

Swift3 NSKeyedArchiver.archivedData因NSDictionary对象而崩溃,swift3,Swift3,在将应用程序从Objective C转换为Swift 3时,许多数据结构不再是类,而是结构。在一个特定的函数中,我需要使用NSKeyedArchiver.archivedData(withRootObject:函数)来封装这些结构,然后再通过网络连接发送它们,因此我已经将它们转换为良好的旧Objective-C对象。但是当我尝试编码它们时,下面的代码仍然崩溃 enum CustomDataType:Int { case CustomDataType0 = 0 case Custo

在将应用程序从Objective C转换为Swift 3时,许多数据结构不再是类,而是结构。在一个特定的函数中,我需要使用NSKeyedArchiver.archivedData(withRootObject:函数)来封装这些结构,然后再通过网络连接发送它们,因此我已经将它们转换为良好的旧Objective-C对象。但是当我尝试编码它们时,下面的代码仍然崩溃

enum CustomDataType:Int
{
    case CustomDataType0 = 0
    case CustomDataType1 = 1
    case CustomDataType2 = 2
    case CustomDataType3 = 3
    case CustomDataType4 = 4
}

func send(dataType:CustomDataType, dictionary: Dictionary<String, Any>)
{
   // convert everything into objects
    let dataTypeObject:NSNumber = NSNumber(integerLiteral: dataType.rawValue)
    let dataValueObject:NSDictionary = dictionary as NSDictionary
    let dataTypeObjectKey:NSString = "regis-type"
    let dataValueObjectKey:NSString = "regis-value"

    let transmissionData:NSDictionary = [dataTypeObjectKey : dataTypeObject, dataValueObjectKey :dataValueObject]

    let data = NSKeyedArchiver.archivedData(withRootObject: transmissionData)
enum CustomDataType:Int
{
case CustomDataType0=0
案例CustomDataType1=1
案例CustomDataType2=2
案例CustomDataType3=3
案例CustomDataType4=4
}
func send(数据类型:CustomDataType,字典:dictionary)
{
//将所有内容转换为对象
让dataTypeObject:NSNumber=NSNumber(integerLiteral:dataType.rawValue)
让dataValueObject:NSDictionary=字典作为NSDictionary
让dataTypeObjectKey:NSString=“regis type”
让dataValueObjectKey:NSString=“regis value”
让transmissionData:NSDictionary=[dataTypeObjectKey:dataTypeObject,dataValueObjectKey:dataValueObject]
let data=NSKeyedArchiver.archivedData(带根对象:transmissionData)
最后一行发生了碰撞,我很困惑。有什么想法吗

事故日志:

[\u SwiftValue encodeWithCoder:]:发送到实例0x170448df0的选择器无法识别
2017-02-22 17:10:10.338319 cd Swift[441:56841]***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[\u SwiftValue encodeWithCoder:::]:未识别的选择器发送到实例0x170448df0”

结果取决于您传递给
发送的
词典的内容(数据类型:词典:)
。很可能它包含无法存档的内容,可能是某种Swift枚举。已确认。我昨天编写了一个转换器例程,该错误被消除。