我创建了一个符合NSCoding的Swift类.(Xcode 6 GM,Swift 1.0)

import Foundation

private var nextNonce = 1000

class Command: NSCoding {

    let nonce: Int
    let string: String!

    init(string: String) {
        self.nonce = nextNonce++
        self.string = string
    }

    required init(coder aDecoder: NSCoder) {
        nonce = aDecoder.decodeIntegerForKey("nonce")
        string = aDecoder.decodeObjectForKey("string") as String
    }

    func encodeWithCoder(aCoder: NSCoder) {
        aCoder.encodeInteger(nonce, forKey: "nonce")
        aCoder.encodeObject(string, forKey: "string")
    }
}

但是当我打电话的时候.

let data = NSKeyedArchiver.archivedDataWithRootObject(cmd);

它给了我这个错误.

2014-09-12 16:30:00.463 MyApp[30078:60b] *** NSForwarding: warning: object 0x7a04ac70 of class '_TtC8MyApp7Command' does not implement methodSignatureForSelector: -- trouble ahead
Unrecognized selector -[MyApp.Command replacementObjectForKeyedArchiver:]

我该怎么办?

推荐答案

虽然SWIFT类在没有继承的情况下工作,但要使用NSCoding就必须使用inherit from 101.

class Command: NSObject, NSCoding {
    ...
}

遗憾的是,编译器错误的信息量不是很大:(

Ios相关问答推荐

(Flutter)获取图像从图像拾取器保存和加载问题

彩色进度线--SWIFT

在SWIFT中将圆角+透明背景从导入视频(.mp4)添加到导出视频(.mov)

滚动时突出显示工具栏项目

通过在SWIFT中不起作用的泛型传递协议一致性类型

如何在Android或iPhone上的原生react 中处理其他应用程序通知?

当目标位于菜单标签内时,matchedGeometryEffect 的行为很奇怪

SwiftUI中的Tap手势无法识别视图上的偏移变化

iOS 16.4 更新后 Xcode 14.3 构建错误:找不到 libarclite_iphoneos.a,链接器命令失败

具有一个参数/参数的泛型类的泛型类

视图之间的 SwiftUI 过渡,没有过渡

`Task` 在内部调用异步函数时阻塞主线程

将视图(例如 Text())不透明度设置为 0 或将背景设置为 Color.clear 会导致它不被绘制

UITableView 页脚,停止浮动内容

在 iOS 8 中显示相机权限对话框

以编程方式 Select UITextField 中的所有文本

Xcode 10.2 无法在 iOS < 10 的模拟器上运行应用程序

Objective-C 将 NSDate 设置为当前 UTC

SwiftUI 应用生命周期 iOS14 AppDelegate 代码放哪里?

使用 xib 创建可重用的 UIView(并从情节提要中加载)