NSKeyedArchiver在Swift中解码Objective-C plist

NSKeyedArchiver在Swift中解码Objective-C plist,objective-c,swift,nskeyedunarchiver,Objective C,Swift,Nskeyedunarchiver,我正在将一个应用程序从Objective-C更新为Swift,无法获取在Objective-C中编码的.plist文件,以便在Swift中读取和解码。我添加了一个桥接头文件来使用我的旧对象,但我尝试的所有操作都以nil对象结束。在Xcode中打开文件将显示所有数据 if FileManager.default.fileExists(atPath: url.path) { do { let data = try Data.init(contentsOf: url)

我正在将一个应用程序从Objective-C更新为Swift,无法获取在Objective-C中编码的
.plist
文件,以便在Swift中读取和解码。我添加了一个桥接头文件来使用我的旧对象,但我尝试的所有操作都以
nil
对象结束。在Xcode中打开文件将显示所有数据

if FileManager.default.fileExists(atPath: url.path) {
    do {
        let data = try Data.init(contentsOf: url)

        if let data = NSKeyedUnarchiver.unarchiveObject(with: data) as? NSMutableArray {
            print("\(data)")
        } else {
            print("failed")
        }
    } catch {
        print(error)
    }
}

NSKeyedArchiver
格式和plist不是一回事。你应该看一看。不管怎样,我们需要看看你的数据是什么样的,才能对发生的事情和原因给出一个透彻的解释。我想你是糊涂了
NSKeyedArchiver
将序列化对象保存为
plist
。这是Objective-C和Swift之间的区别。这与数据无关。
NSKeyedArchiver
可以使用plist格式写出文件,但不能使用它加载任意plist。您的问题并不是100%清楚地表明您的意思是,它是一个使用
NSKeyedArchiver
编写的文件,而不仅仅是一个任意的plist。如果您的文件是使用
NSKeyedArchiver
编写的,您应该能够以Objective-C和Swift两种格式将其取回。如果您将
作为?
-cast删除,它是否仍打印“失败”,或者是否看到数据?