Ios Swift 3核心数据
在Swift 3中尝试执行NSFETCH请求时出现以下错误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
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")
}
}
}