gpt4 book ai didi

ios - 使用 aCoder 编码时出现 Swift PFFile 异常

转载 作者:行者123 更新时间:2023-11-30 12:11:46 24 4
gpt4 key购买 nike

我正在尝试对 PFFile 进行编码并永久保存它,但它返回异常:

类(class):

import UIKit

import Parse

class Usuario: PFObject, PFSubclassing, NSCoding {

//MARK: Propriedades
//O NSManaged é para o PFObject
@NSManaged var nome: String?
@NSManaged var foto: PFFile?
@NSManaged var dataNascimento: Date?
@NSManaged var numeroTelefone: String?
@NSManaged var pais: PaisCodigo?
@NSManaged var telefoneE164: String?

static func parseClassName() -> String {
return "Usuario"
}


//Isto é para NSObject e NSCoding
override init() {

super.init()
}

required init(coder aDecoder: NSCoder) {

super.init()

self.nome = aDecoder.decodeObject(forKey: "nome") as? String
self.foto = aDecoder.decodeObject(forKey: "foto") as? PFFile
self.dataNascimento = aDecoder.decodeObject(forKey: "dataNascimento") as? Date
self.numeroTelefone = aDecoder.decodeObject(forKey: "numeroTelefone") as? String
self.pais = aDecoder.decodeObject(forKey: "pais") as? PaisCodigo
self.telefoneE164 = aDecoder.decodeObject(forKey: "telefoneE164") as? String
}

func encode(with aCoder: NSCoder) {

if let nomeUsuario = nome {
aCoder.encode(nomeUsuario, forKey: "nome")
}

if let fotoUsuario = foto {
//The problems happens here
aCoder.encode(fotoUsuario, forKey: "foto")
}

if let dataNascimentoUsuario = dataNascimento {
aCoder.encode(dataNascimentoUsuario, forKey: "dataNascimento")
}

if let numeroTelefoneUsuario = numeroTelefone {
aCoder.encode(numeroTelefoneUsuario, forKey: "numeroTelefone")
}

if let paisUsuario = pais {
aCoder.encode(paisUsuario, forKey: "pais")
}

if let telefoneE164Usuario = telefoneE164 {
aCoder.encode(telefoneE164Usuario, forKey: "telefoneE164")
}
}
}

我尝试用这种方法保存数据:

contatos 对象是 Usuario(上面的类)的数组

func fazerCacheContatos() {

let userDefaults = UserDefaults.standard

let contatosIDoPartyCodificados: Data = NSKeyedArchiver.archivedData(withRootObject: contatos)

userDefaults.set(contatosCodificados, forKey: "cacheContatos")

userDefaults.synchronize()
}

当我运行应用程序时,我收到此异常:

-[PFFileencodeWithCoder:]:无法识别的选择器发送到实例 0x170e513d0

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

最佳答案

您的 PFFile 类似乎不支持 NSCoding 协议(protocol)。如果 PFFile 是您自己的类,那么您可以通过添加 NSCoding 支持来解决此问题。如果 PFFile 是您从第三方获得的类,但您没有源代码,那么您将必须找到其他方法来存储重构 所需的信息。 >PFFile 稍后。

关于ios - 使用 aCoder 编码时出现 Swift PFFile 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45967424/

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