swift中的核心数据

Posted

技术标签:

【中文标题】swift中的核心数据【英文标题】:Coredata in swift 【发布时间】:2016-09-22 12:27:33 【问题描述】:

您好,我在 Swift 中遇到核心数据问题,当我认为它应该在控制台中返回 'Joe' + 'pass' 时,这不会显示错误但也不会打印任何内容。有人可以帮忙吗?

import UIKit
import CoreData

class ViewController: UIViewController 



override func viewDidLoad() 
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    var appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

    var context:NSManagedObjectContext = appDel.managedObjectContext

    var newUser = NSEntityDescription.insertNewObjectForEntityForName("Users", inManagedObjectContext: context) as NSManagedObject

    newUser.setValue("Joe", forKey: "username")

    newUser.setValue("pass", forKey: "password")

    do 
     try context.save()
     catch let error 
        print("Couldn't save user data")
        print(error)
    

    let request = NSFetchRequest(entityName: "Users")
        request.returnsObjectsAsFaults = false

    do 
        var results = try context.executeFetchRequest(request)
        results = results as! [NSManagedObject]
        if results.count > 0 
        for results in results 
            print(results)
            
     catch let error as NSError 
        print(error)
    


override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.




【问题讨论】:

"for results in results" - 这真的是你的代码吗?因为那不应该编译。同时,在 for 上方的行上打断并在调试器中检查 results,它是否包含任何内容? 昨天我在同一问题下的一篇帖子中看到了这个,当时我没有解决我的错误,我对 Swift 真的很陌生,所以只是想找到我的脚。看看这个,***.com/questions/39592609/core-data-issue-swift 【参考方案1】:

    您应该创建自己的 coredata 类(作为 NSManagedObject 的子类),然后从该类中创建数组。

    准确指定您要打印的内容。你的情况

    新用户.用户名

【讨论】:

我该怎么做,对不起,我对此比较陌生。 转到您创建 coredata 类的位置,选择您想要的类并进入编辑器 -> 创建 nsmanagedobject 子类。这应该为您创建一个可以直接使用的类 err,我不相信我有一个核心数据类,除非你指的是'Core_Data_Demo.xcdatamodeld'?当我去文件>新文件>类>它没有显示那个选项?【参考方案2】:

我终于意识到我的问题是什么,我实际上并没有被实体重命名为“用户”,我将它保留为“实体”,所以当我这样做时

let newUser = NSEntityDescription.insertNewObjectForEntityForName("Users", inManagedObjectContext: context) as NSManagedObject 
let request = NSFetchRequest(entityName: "Users") 

我实际上应该用“实体”替换两个用户,这现在解决了我的问题,我想还是谢谢你的帮助!

【讨论】:

以上是关于swift中的核心数据的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3 中的核心数据属性验证

核心数据中的 IN 子句 - Swift

swift中的核心数据值访问错误

Swift 3 中的 JSON 图像和核心数据 [关闭]

删除核心数据swift3中每个实体中的所有数据

swift中的核心数据数组