我正在尝试将数据存储到AppDelegate
本身的Core-Data中,然后从ViewController
获取该数据。由于某些原因,它没有保存在Core-Data中。我曾尝试在互联网上搜索此问题,但未获得任何具体解决方案。我粘贴了以下代码-
AppDelegate.swift
func saveContext () {
let context = persistentContainer.viewContext
print(context)
let entity = NSEntityDescription.entity(forEntityName: "Msg", in: context)
print(entity)
let new = NSManagedObject(entity: entity!, insertInto: context)
print(new)
print(getData.alert_message)
new.setValue(getData.alert_message, forKey: "title")
do {
try context.save()
print("save")
print(new.value(forKey: "title"))
} catch {
let nserror = error as NSError
fatalError("Unresolved error \(nserror), \(nserror.userInfo)")
}
}
控制台输出
答案 0 :(得分:1)
您可以通过NSFetchRequest
尝试以下方法,您只需要传递实体名称作为函数的参数即可。
func getAllRecordFromTableWhere(_ tableName: String) -> [NSManagedObject]? {
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: tableName)
do {
return try managedContext.fetch(fetchRequest)
} catch let error as NSError {
print("Could not fetch. \(error), \(error.userInfo)")
}
return nil
}
和类似
的调用函数if let arrayOfData = DBHelper.getAllRecordFromTableWhere("Msg") {
print(arrayOfData)
}
答案 1 :(得分:0)
我认为您没有为实体的所有属性提供值,所以请先检查一下。
尝试类似
new.setValue(msgdata,forKey:“ msgdata”)
// msgdata是您要保存在Coredata实体上的
//尝试这样的事情
答案 2 :(得分:0)
Hear I have Set My Own Solution, Hope This help You
let contex = ((UIApplication.shared.delegate) as! AppDelegate).persistentContainer.viewContext
func SaveData()
{
let entity = NSEntityDescription.insertNewObject(forEntityName: "Employee", into: contex);
entity.setValue(txtname.text, forKey: "empname") // txtname.text is My TexField name
entity.setValue(txtadd.text, forKey: "empadd");
do
{
try contex.save();
}
catch
{
}
}
答案 3 :(得分:0)
就我而言,我试图更新保存在核心数据中的数据。但每次它返回旧数据(不是更新版本)
保存成功的消息在与您相同的控制台中打印
下面是一些简单的步骤,这些问题终于解决了我的问题
NSFetchRequest
这是我的更新数据功能
func updateUserData(_ userDetails: UserModel) {
let request = UserDetails.fetchRequest() as NSFetchRequest<UserDetails>
do {
let result = try persistentContainer.viewContext.fetch(request)
if let data = result.first?.userData as Data? {
var loginModel = LoginModel(data: data)
loginModel?.user = userDetails
self.clearUserData() //deleting old data
self.userLoginData = loginModel?.jsonData
}
}catch let error as NSError {
debugPrint(error.localizedDescription)
}
}