【问题标题】:I'm getting this error in Swift 'NSInvalidArgumentException'我在 Swift 'NSInvalidArgumentException' 中收到此错误
【发布时间】:2020-05-02 03:07:17
【问题描述】:

'NSInvalidArgumentException',原因:'不可接受的属性值类型:property = "save1D";所需类型 = NSData;给定类型 = Swift.__SwiftDeferredNSArray;

我已经被困在这几天了。我正在尝试保存和加载核心数据。我正在尝试将集合视图中的数组保存到表格视图中,然后将它们重新加载回集合视图中。我一直无法找到适合我需要的解决方案。我确定我错过了一些明显的东西,但我无法看到它。谁能帮我解决这个问题?

 @IBAction func saveData(_ sender: Any) {
        let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
        let entity = NSEntityDescription.entity(forEntityName: "TextSave", in: context)
        let textEntity = NSManagedObject(entity: entity!, insertInto: context)

        textEntity.setValue(v1, forKey: "save1D")
        textEntity.setValue(i1, forKey: "save2D")
        textEntity.setValue(ImageView, forKey: "picCock")

        do {
            try context.save()
            print("saved")

        } catch {
            print("failed save")
        }
        }
   func getData() {
            let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
             let request = NSFetchRequest<NSFetchRequestResult>(entityName: "TextSave")
             request.returnsObjectsAsFaults = false

             do {
                 let result = try context.fetch(request)
                 for data in result as! [NSManagedObject]
                 {
                    v1 = data.value(forKey: "save1D") as! [String]
                    i1 = data.value(forKey: "save2D") as! [String]
                     ImageView = (data.value(forKey: "picCock") as! UIImageView)
                 }
             } catch {
                 print("failed")
             }
             }

【问题讨论】:

  • 而不是 KVC (setValue) 使用 TextSave 子类和点表示法。好处是您在编译时会遇到类型不匹配错误。

标签: arrays swift core-data


【解决方案1】:

问题来了

textEntity.setValue(v1, forKey: "save1D")

v1NSData 类型,而它应该是一个数组

【讨论】:

  • var v1 = [String]() var i1 = [String]() 已经是数组,错误是“原因:'不可接受的属性值类型:属性 =“save1D” ; 所需类型 = NSData; 给定类型 = Swift.__SwiftDeferredNSArray;"它似乎要求 NSData 而不是数组。
猜你喜欢
  • 1970-01-01
  • 2012-02-08
  • 2017-07-16
  • 1970-01-01
  • 2013-07-31
  • 2018-12-23
  • 1970-01-01
  • 2015-10-12
  • 1970-01-01
相关资源
最近更新 更多