[英]iOS9 - Saving a string to Core Data
我知道这个问题已经被问过很多次,但是无论我尝试多少解决方案,我都无法解决。
因此,我的应用程序将存储有关当前登录用户的用户信息。我想将其作为简单的User对象存储在Core Data中。
我用以下属性创建了一个名为UserData
的新实体:
name
username
profilePicture
当用户登录时,将从服务器获取这些值,并将这些值本地存储在Core Data中。
我为我的实体生成了NSManagedObject
子类,并得到了以下两个类
// UserData.swift
// Created by xxx on 2015-10-14.
import Foundation
import CoreData
class UserData: NSManagedObject {
// Insert code here to add functionality to your managed object subclass
}
和
// UserData+CoreDataProperties.swift
// Created by xxx on 2015-10-14.
// Choose "Create NSManagedObject Subclass…" from the Core Data editor menu
// to delete and recreate this implementation file for your updated model.
import Foundation
import CoreData
extension UserData {
@NSManaged var profilePicture: NSData?
@NSManaged var username: String?
@NSManaged var name: String?
}
每当应保存用户名或从Core Data获取用户名时,都会调用两个函数
func saveUsername(username: String) {
let appDelegate =
UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let entity = NSEntityDescription.entityForName("UserData",
inManagedObjectContext:managedContext)
let user = UserData(entity: entity!,
insertIntoManagedObjectContext: managedContext)
user.setValue(username, forKey: "name")
do {
try managedContext.save()
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
}
func getUsername() -> String{
let appDelegate =
UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "UserData")
var users = [UserData]()
do {
let results =
try managedContext.executeFetchRequest(fetchRequest)
users = results as! [UserData]
} catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
return users[0].name!
}
这是我第一次尝试使用核心数据,似乎丢失了一些东西。 谁能看到这里有什么问题吗? 我不确定数据是否正确保存,并且fetchRequest
的results
是否为空数组。
希望这可以回答您的部分问题“我不确定数据是否正确保存”
Xcode 6.0.1的说明
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.