【问题标题】:Coredata in swiftswift中的核心数据
【发布时间】: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 真的很陌生,所以只是想找到我的脚。看看这个,stackoverflow.com/questions/39592609/core-data-issue-swift

标签: ios swift core-data swift3


【解决方案1】:
  1. 您应该创建自己的 coredata 类(作为 NSManagedObject 的子类),然后从该类中创建数组。

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

    新用户.用户名

【讨论】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    相关资源
    最近更新 更多