Я следую за выдающимся курсом по Swift, но, похоже, устарел, когда дело доходит до Core Data. Я хочу сохранить имя пользователя и пароль в основных данных, но, похоже, он ничего не сохраняет. Зачем?SWIFT 2: Core Data не работает
Большинство учебных пособий в сети устарели.
Я нажал кнопку «Основные данные», когда создал пустой объект и создал необходимые объекты и атрибуты.
let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate let context:NSManagedObjectContext = appDel.managedObjectContext!
пусть NEWUSER = NSEntityDescription.insertNewObjectForEntityForName ("Пользователи", inManagedObjectContext: контекст)
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? Спасибо
----------------------------- РЕШЕНИЕ: Код основных данных, который хорошо работает на Swift 2 ---- --------------- Этот куча кода хранит данные и отображает его, если вы хотите также удалить данные, просто раскомментируйте строку // context.deleteObject (результат как! 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' объявляется и инициализируется? – Glorfindel
Ваш код, кажется, вставляет новый объект «Пользователи», а затем извлекает все объекты «Пользователи» и удаляет их. Поэтому, когда вы сохраняете контекст, в хранилище ничего не будет записано. Попробуйте удалить 'context.deleteObject (result as! NSManagedObject)', чтобы проверить, правильно ли сохранены вещи. – pbasdf