Ios Swift 3核心数据

Ios Swift 3核心数据,ios,core-data,swift3,Ios,Core Data,Swift3,在Swift 3中尝试执行NSFETCH请求时出现以下错误 Generic parameter 'ResultType' could not be inferred 我检查了很多链接,但我还没有找到解决方法 这就是我所做的 ViewController.swift func loadData(){ let request = NSFetchRequest(entityName: "Grocery") //Error occurs here(Generic parameter 'Resu

在Swift 3中尝试执行NSFETCH请求时出现以下错误

Generic parameter 'ResultType' could not be inferred
我检查了很多链接,但我还没有找到解决方法

这就是我所做的

ViewController.swift

func loadData(){
    let request = NSFetchRequest(entityName: "Grocery") //Error occurs here(Generic parameter 'ResultType' could not be inferred)
    do{
        let results = try manageObjectContext.execute(request)
        groceries = results as! [NSManagedObject]
        tableView.reloadData()
    }catch{
        fatalError("Error is retriving Gorcery items")
    }
}
试试这个:

let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Grocery")
let request=NSFetchRequest(entityName:“杂货店”)
它应该会起作用:)

因此,您的代码应该如下所示:

func loadData(){
 let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Grocery")
do{
    let results = try manageObjectContext.execute(request)
    groceries = results as! [NSManagedObject]
    tableView.reloadData()
}catch{
    fatalError("Error is retriving Gorcery items")
 }
}
func loadData(){
let request=NSFetchRequest(entityName:“杂货店”)
做{
let results=try manageObjectContext.execute(请求)
杂货=结果为![NSManagedObject]
tableView.reloadData()
}抓住{
fatalError(“错误是检索血腥物品”)
}
}
您也可以使用:

let request : NSFetchRequest<Grocery> = Grocery.fetchRequest()


学分:Nitesh Patil

导入UIKit
导入CoreData
类ViewController:UIViewController{
重写func viewDidLoad(){
super.viewDidLoad()
view.backgroundColor=.white
让appDelegate=UIApplication.shared.delegate为!appDelegate
让上下文=appDelegate.persistentContainer.viewContext
//正在添加新用户并保存到数据库中。。。
让newUser=NSEntityDescription.insertNewObject(forEntityName:“Users”,插入:上下文)
setValue(“蝙蝠侠”,forKey:“用户名”)
setValue(“罗宾”,forKey:“密码”)
做{
尝试context.save()
打印(“已保存”)
}抓住{
打印(“发生错误…”)
}
//从数据库还原数据
let request=NSFetchRequest(entityName:“用户”)
request.returnsObjectsAsFaults=false
做{
让结果=
尝试context.fetch(请求)
如果results.count>0{
对于结果,结果为![NSManagedObject]{
如果让username=result.value(forKey:“username”)作为?字符串{
打印(用户名)
}
}
}
否则{
打印(“无结果”)
}
}抓住{
打印(“无法获取结果”)
}
}
}

谢谢,它成功了,但我将其改为使用NSManagedObject子类快速介绍Swift 4中的CoreData:
let results : [Grocery] = try manageObjectContext.execute(request)
let results = try manageObjectContext.execute(request)
import UIKit
import CoreData

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = .white

        let appDelegate = UIApplication.shared.delegate as!AppDelegate
        let context = appDelegate.persistentContainer.viewContext

        //adding new user and saving in database...
        let newUser = NSEntityDescription.insertNewObject(forEntityName: "Users", into: context)
        newUser.setValue("Batman", forKey: "username")
        newUser.setValue("Robin", forKey: "password")

        do {
            try context.save()
            print("saved")
        } catch {
            print("Error occured...")
        }

        // restoring data back from database
        let request = NSFetchRequest < NSFetchRequestResult > (entityName: "Users")
        request.returnsObjectsAsFaults = false

        do {
            let results =
                try context.fetch(request)

            if results.count > 0 {

                for result in results as![NSManagedObject] {

                    if let username = result.value(forKey: "username") as ? String {

                        print(username)
                    }
                }
            }

            else {
                print("No results")
            }
        } catch {
            print("Couldn't fetch results")
        }
    }
}