更改项目名称后,我(我认为)命名空间出现问题。这是错误:
由于未捕获的异常“NSInvalidUnarchiveOperationException”而终止应用程序,原因:“* -[NSKeyedUnarchiverdecodeObjectForKey:]:无法解码密钥(NS.objects)类(Apple.Document)的对象;该类可以在源代码或未链接的库中定义”
有一个类似的问题已解决here,但这指的是iOS。对于 Mac,只需更改display bundle name
不会更改 Dock 中图标下显示的名称。
将项目名称从“Apple”更改为“Pear”后,
我在获取时遇到问题Document
来自 CoreData 的对象:
// Document
@objc(Document)
class Document: NSManagedObject {
@NSManaged var content: NSAttributedString
}
文件content
包含SpecialTextAttachment
s.
// SpecialTextAttachment
class SpecialTextAttachment: NSTextAttachment {
//
}
打印文档内容时,它给出了上面提到的错误。我该如何进行转换Apple.SpecialTextAttachment
to Pear.SpecialTextAttachment
?看来我需要在迭代数组之前对其进行转换Document
s,因为仅指Document
类导致崩溃。我也无法按照建议仅为此类创建另一个项目here.
// in ViewController
func getDocuments() {
let fetchRequest = NSFetchRequest()
fetchRequest.entity = NSEntityDescription.entityForName("Document", inManagedObjectContext: managedObjectContext!)
fetchRequest.fetchBatchSize = 20
let docs = (try? managedObjectContext!.executeFetchRequest(fetchRequest)) as! [Document]
}
我有点放弃了,并继续坚持我的项目重命名的决定。
So in init()
在我的类中,它包含处理 CoreData 数据的所有方法,我放置了以下代码:
class CoreDataHelper {
init() {
NSKeyedUnarchiver.setClass(SpecialTextAttachment.self, forClassName: "Apple.SpecialTextAttachment")
}
}
这将转换任何Apple.SpecialTextAttachment
to Pear.SpecialTextAttachment
在任何即将进行的操作中SpecialTextAttachment
可能会出现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)