【发布时间】:2015-08-26 19:59:34
【问题描述】:
我正在学习关于 Swift 的优秀课程,但在 Core Data 方面似乎已经过时了。我想在核心数据中存储用户名和密码,但它似乎没有永久存储任何内容。为什么?
网上大部分教程都过时了。
-
我在创建空项目并创建所需的实体和属性时单击了核心数据选项。
let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate let context:NSManagedObjectContext = appDel.managedObjectContext!让 newUser = NSEntityDescription.insertNewObjectForEntityForName("Users", inManagedObjectContext: context)
newUser.setValue("Rober", forKey: "username") newUser.setValue("pass", forKey: "password") let request = NSFetchRequest(entityName: "Users") request.returnsObjectsAsFaults = false //request.predicate = NSPredicate(format: "username = %@", "kirsten") var results: [AnyObject]? do { results = try context.executeFetchRequest(request) } catch _ { results = nil } if results!.count > 0 { for result: AnyObject in results! { if let username: String = result.valueForKey("username") as? String { print(username) result.setValue("kirsten", forKey: "username") context.deleteObject(result as! NSManagedObject) do { try context.save() } catch _ { } } } } else { print("No results") }
会是什么?是否有任何关于在 swift 2 中处理核心数据的更新教程? 谢谢
------------------ SOLUTION : Core Data 代码在 Swift 2 上运行良好 -------- ------------ 这一堆代码存储数据并显示它,如果您还想删除数据,只需取消注释行 // context.deleteObject(result as!NSManagedObject)
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let context:NSManagedObjectContext = appDel.managedObjectContext!
let newUser = NSEntityDescription.insertNewObjectForEntityForName("Users", inManagedObjectContext: context)
newUser.setValue("Roberto", forKey: "username")
newUser.setValue("pass", forKey: "password")
let request = NSFetchRequest(entityName: "Users")
request.returnsObjectsAsFaults = false
// request.predicate = NSPredicate(format: "username = %@", "kirsten")
var results: [AnyObject]?
do {
results = try context.executeFetchRequest(request)
} catch _ {
results = nil
}
if results!.count > 0 {
for result: AnyObject in results! {
if let username: String = result.valueForKey("username") as? String {
print(username)
// result.setValue("Angel", forKey: "username")
// context.deleteObject(result as! NSManagedObject)
do {
try context.save()
} catch _ {
}
}
if let password: String = result.valueForKey("password") as? String {
print(password)
// result.setValue("Angel", forKey: "username")
// context.deleteObject(result as! NSManagedObject)
do {
try context.save()
} catch _ {
}
}
}
} else {
print("No results")
}
}
【问题讨论】:
-
你能贴出
AppDelegate中声明和初始化managedObjectContext的部分吗? -
您的代码似乎正在插入一个新的
Users对象,然后获取所有Users对象并删除它们。因此,当您保存上下文时,不会将任何内容写入存储。尝试删除context.deleteObject(result as! NSManagedObject)以查看内容是否正确保存。
标签: ios swift core-data mobile