在核心数据swift ios中使用未解析的标识符“模型”

Posted

技术标签:

【中文标题】在核心数据swift ios中使用未解析的标识符“模型”【英文标题】:Use of unresolved identifier "Model" in core data swift ios 【发布时间】:2018-01-12 05:39:32 【问题描述】:

我将数据保存在一个名为 Forms 的实体中,但是当我调用 Forms 时,它给了我错误 一切都很好,但突然发生错误,现在让我很恼火。我不知道为什么即使没有任何语法错误。

使用未解析的标识符“Forms”

这是我的代码

import UIKit
import CoreData

@available(ios 11.0, *)
class ViewViewController: UIViewController, UITableViewDelegate, UITableViewDataSource 
    // var getAddController : AddViewController = AddViewController()
    var fName : String?
    var fDesc : String?
    var formName : String?
    var results : [NSManagedObject] = []

    @IBOutlet weak var menu: UIBarButtonItem!
    @IBOutlet weak var viewTableView: UITableView!

    var manageObjectContext: NSManagedObjectContext!
    var eventArray = [Forms]()  // Where **Forms** is an model name

    let appDel = UIApplication.shared.delegate as! AppDelegate
    let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Forms")
    //var eventRequest: NSFetchRequest<Forms> = Forms.fetchRequest()

    func loadSaveData()  
        let eventRequest: NSFetchRequest<Forms> = Forms.fetchRequest()
        do
            eventArray = try manageObjectContext.fetch(eventRequest)
            self.viewTableView.reloadData()
        catch
        
            print("Could not load save data: \(error.localizedDescription)")
        
    

    ...
    table view methods here
    ...

    func moveToEdit() 
        let mainStoryBoard: UIStoryboard = UIStoryboard(name: "Main", bundle : nil)
        let desController = mainStoryBoard.instantiateViewController(withIdentifier: "EditViewController") as! EditViewController
        let newFrontViewController = UINavigationController.init(rootViewController:desController)
        revealViewController().pushFrontViewController(newFrontViewController, animated: true)
    

    override func viewDidLoad() 
        super.viewDidLoad()

        menu.target = revealViewController()
        menu.action = #selector(SWRevealViewController.revealToggle(_:))
        self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())

        let context = appDel.persistentContainer.viewContext
        results = try! context.fetch(request) as! [NSManagedObject]

        viewTableView.delegate = self
        viewTableView.dataSource = self
        viewTableView.reloadData()

        request.returnsObjectsAsFaults = false

        manageObjectContext = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
        self.loadSaveData()
    

更新

var eventArray = [Forms]() 更改为 var eventArray : [NSManagedObject] = []

func loadSaveData() 中出现错误

 let eventRequest: NSFetchRequest<Forms> = Forms.fetchRequest()

使用未声明的类型“表单”

【问题讨论】:

将 var eventArray = [Forms]() 更改为 var eventArray : [NSManagedObject] = [] @Shezad 更新问题仍然错误 让 eventRequest: NSFetchRequest = Forms.fetchRequest() 让 eventRequest = NSFetchRequest(entityName: "Forms") @Shezad 好心回答,以便我接受你的回答 【参考方案1】:

1.将你的 eventArray 类型更改为 NSManagedObject

var eventArray : [NSManagedObject] = []

2.为您的 loadSaveData() 方法更新代码。

func loadSaveData()  
    let eventRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Forms")
    do
        eventArray = try manageObjectContext.fetch(eventRequest) as! [NSManagedObject]
        self.viewTableView.reloadData()
    catch
    
        print("Could not load save data: \(error.localizedDescription)")
    

【讨论】:

以上是关于在核心数据swift ios中使用未解析的标识符“模型”的主要内容,如果未能解决你的问题,请参考以下文章

iOS Swift 单元测试导致标识符未解析

Swift:使用未解析的标识符“json”

Swift 中“使用未解析的标识符”

使用未解析的标识符“FIRAuth”(Swift 2、Firebase 3.x)

ParseFacebookUtilsV4、Swift 和 CocoaPods:未解析的标识符

如何将 Core Data 添加到已经创建的 iOS 项目中