更新核心数据模型后出错 - 无法识别的选择器发送到实例
Posted
技术标签:
【中文标题】更新核心数据模型后出错 - 无法识别的选择器发送到实例【英文标题】:Error after updating core data model - Unrecognized selector sent to instance 【发布时间】:2016-08-20 01:37:52 【问题描述】:将名为 Unique Identifier
的字符串属性添加到名为 Labels
的 Enitiy
/NSManagedObject
后,出现以下错误。然而,编译器不满意的不是Unique Identifier
。
2016-08-20 02:20:08.394 AN[22499:8730414] -[AN.Labels 文件夹]: 无法识别的选择器发送到实例 0x7ffe907e1a80 2016-08-20 02:20:08.405 AN[22499:8730414] *** 由于未捕获而终止应用程序 异常'NSInvalidArgumentException',原因:'-[AN.Labels 文件夹]: 无法识别的选择器发送到实例 0x7ffe907e1a80'
这是我的 NSManagedObject 类
class Labels: NSManagedObject
@NSManaged var title: String?
@NSManaged var details: String
@NSManaged var date: NSDate?
@NSManaged var uniqueIdentifier: NSString?
@NSManaged var arrayOfFolders: [Folders]
@NSManaged var folder: Folders?
@NSManaged var folders: NSSet
override func awakeFromFetch()
super.awakeFromFetch()
self.regenerateFolders()
func regenerateFolders()
let date = NSSortDescriptor(key: "date", ascending: false)
if let array = folders.sortedArrayUsingDescriptors([date]) as? [Folders]
self.arrayOfFolders = array
我已确保该应用使用新的 coreData
模型,并且在我的 CoreData
Stack 中有以下内容。我已经有一段时间没有遇到这个问题了,因为我的应用会自动更新以使用最新的核心数据模型。
var storeDirectoryURL: NSURL
return try! NSFileManager.defaultManager().URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: true)
var storeURL: NSURL
return self.storeDirectoryURL.URLByAppendingPathComponent("SingleViewCoreData.sqlite")
func setupCoreData()
let modelURL = NSBundle.mainBundle().URLForResource("AN", withExtension: "momd")
let model = NSManagedObjectModel(contentsOfURL: modelURL!)
try! NSFileManager.defaultManager().createDirectoryAtURL(self.storeDirectoryURL, withIntermediateDirectories: true, attributes: nil)
let coordinator = NSPersistentStoreCoordinator(managedObjectModel: model!)
let options = [NSMigratePersistentStoresAutomaticallyOption: true, NSInferMappingModelAutomaticallyOption: true]
try! coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: self.storeURL, options: options)
managedObjectContext = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType)
managedObjectContext.persistentStoreCoordinator = coordinator
managedObjectContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy
有人有什么建议吗?
【问题讨论】:
【参考方案1】:检查核心数据模型中标签和文件夹之间的关系。您可能将反向关系命名为标签以外的名称。
【讨论】:
以上是关于更新核心数据模型后出错 - 无法识别的选择器发送到实例的主要内容,如果未能解决你的问题,请参考以下文章
核心数据错误 - NSDatelocalizedCaseInsensitiveCompare:无法识别的选择器发送到实例