【问题标题】:CoreData issue: -[NSManagedObject setValue:]: unrecognised selector sent to instanceCoreData 问题:-[NSManagedObject setValue:]:无法识别的选择器发送到实例
【发布时间】:2017-04-30 16:17:32
【问题描述】:

我已创建实体 (Article) 并能够获取已保存的数据。现在我想在视图控制器上显示数据,但在第三行,它正在崩溃(“Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Article modiffied_date]: unrecognized selector sent to instance 0x60800009ccf0”)。

currentSelectedArticleArticle 的对象

 1. title = currentSelectedArticle?.title 
 2. image_url = currentSelectedArticle?.image_url 
 3. newdate = currentSelectedArticle?.modiffied_date

但是当我以前打印currentSelectedArticle.它显示下面的结果。

 <Article: 0x60800009ccf0> (entity: <null>; id: 0xd000000000080024 <x-coredata://D5402915-E542-4044-B14B-A3BF423847EC/Article/p2> ; data: <fault>)

我做错了什么?

【问题讨论】:

  • 确保modiffied_date 匹配Article 对象的实际属性。看起来您至少在​​“修改”一词中有错字。
  • modified_date 是文章的实际财产。我认为 currentSelectedArticle 实体的问题是 null 打印(实体:)。
  • 看起来不像。错误显示“无法识别的选择器”,打印输出显示它是一个 Article 对象,因此所有证据都表明它是您尝试访问的属性的问题。我不认为“实体:”的意思是你认为的意思。 Article 对象本身不为空。您是否将属性添加到 CoreData 地图?

标签: ios swift core-data


【解决方案1】:

我在从 CoreData 提取数据时遇到了同样的问题!所以,我像这样在 Swift 3 中实现了它..

第一步:添加import CoreData

第 2 步:添加以下代码。 .

let context = ( UIApplication.shared.delegate as! AppDelegate ).persistentContainer.viewContext
var request = NSFetchRequest<NSFetchRequestResult>()
request = Article.fetchRequest()
request.returnsObjectsAsFaults = false
let arrayArticle = try context.fetch(request)

【讨论】:

    【解决方案2】:

    当您在托管对象出现故障之前打印它的描述时,您不会得到很多信息。建议你试试下面的代码来调试:

    if let article = currentSelectedArticle {
        title = article.title
        image_url = article.image_url
        print("Selected article: \(article)")
    }
    

    似乎titleimage_url 是有效的,因此检索它们将导致核心数据在对象中出错,然后当您print 时,您将能够看到其所有属性的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      相关资源
      最近更新 更多