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中的核心数据的主要内容,如果未能解决你的问题,请参考以下文章