【问题标题】:Error in my call : Incorrect Argument Label In Call (have 'key:', expected 'coder:')我的通话出错:通话中的参数标签不正确(有“键:”,预期的“编码器:”)
【发布时间】:2019-05-01 21:45:02
【问题描述】:

我在 Swift 中对表格视图单元格进行排序的方法中收到错误。

错误来自线上的func loadDataFromDatabase()

let sortDescriptor = NSSortDescriptor(key: sortPriority)

我的表格视图控制器文件:

import UIKit
import CoreData

class noteTableViewController: UITableViewController {
    var notes = [Note]()

    var managedObjectContext: NSManagedObjectContext? {
        return (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    }

    func loadDataFromDatabase() {
        let settings = UserDefaults.standard

        let sortPriority = settings.string(forKey: Constants.kPriority)

        let context = appDelegate.persistentContainer.viewContext

        let request = NSFetchRequest<NSManagedObject>(entityName: "Note")

        let sortDescriptor = NSSortDescriptor(key: sortPriority)

        let sortDescriptorsArray = [sortDescriptor]

        request.sortDescriptors = sortDescriptorsArray

        do {
            notes = try context.fetch(request)
        } catch let errer as NSError {
            print("Could not fetch. \(error), \(error.userInfo)")
        }
    }
}

【问题讨论】:

    标签: ios swift nssortdescriptor


    【解决方案1】:

    您的做法是将编译器与 init(coder:) 初始化程序混淆。要使用你想要的初始化器,你还需要提供ascending 参数:

    let sortDescriptor = NSSortDescriptor(key: sortPriority, ascending: true)
    

    【讨论】:

    • 感谢您修复了一个错误,现在我的 do 循环中有一个错误。它说“无法将 'NSFetchRequest' 类型的值转换为预期的参数类型 'NSFetchRequest'”
    • 这可能是因为fetch 接收到NSFetchRequest&lt;NSFetchRequestResult&gt; 作为参数,而您传递的是NSFetchRequest&lt;NSManagedObject&gt;
    • 解决这个问题的最佳方法是什么?
    猜你喜欢
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 2019-12-17
    • 2023-03-23
    • 2020-11-19
    • 2018-02-20
    相关资源
    最近更新 更多