Я знаю, что этот вопрос задан и ответил много раз, но независимо от того, сколько решений я стараюсь, я не могу заставить его работать.iOS9 - Сохранение строки для данных ядра
Итак, мое приложение будет хранить информацию о пользователе, который вошел в систему. Я хочу сохранить его как простой объект User в Core Data.
Я создал новый объект Called 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?
}
Есть две функции, которые вызываются всякий раз, когда имя пользователя должно быть сохранены или полученные из Ядра Данные
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!
}
Это моя первая попытка для использования основных данных, и кажется, что я чего-то не хватает. Может ли кто-нибудь увидеть, что здесь может быть неправильно? Я не уверен, сохранены ли данные правильно, а results
из fetchRequest
- пустой массив.
Я просто использовал свой код и он работает отлично. Откуда вы вызываете 'saveUsername' и' getUsername'? – joern