2015-08-26 4 views
0

Я следую за выдающимся курсом по 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") 

    } 



} 
+0

Вы можете разместить часть 'AppDelegate' где' managedObjectContext' объявляется и инициализируется? – Glorfindel

+1

Ваш код, кажется, вставляет новый объект «Пользователи», а затем извлекает все объекты «Пользователи» и удаляет их. Поэтому, когда вы сохраняете контекст, в хранилище ничего не будет записано. Попробуйте удалить 'context.deleteObject (result as! NSManagedObject)', чтобы проверить, правильно ли сохранены вещи. – pbasdf

ответ

0

Вот мой рабочий код надрез, который

сохранить информацию о пользователях в основных данных с помощью Swift 2,0

// Created by Ramdhan on 06/11/15. 

import UIKit 
import CoreData 

class RegisterViewController: UIViewController { 

    let managedObjectContext = 
    (UIApplication.sharedApplication().delegate 
     as! AppDelegate).managedObjectContext 

    @IBOutlet weak var name: UITextField! 
    @IBOutlet weak var password: UITextField! 
    @IBOutlet weak var rePassword: UITextField! 
    @IBOutlet weak var cell: UITextField! 

    // MARK: - Controller life cycle stack 

    override func viewDidLoad() { 
     super.viewDidLoad() 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 



    //MARK: Store user info on Device DB 

    func saveUserInfoOnDB() 
    { 

     let entityObj = 
     NSEntityDescription.entityForName("User", 
      inManagedObjectContext: managedObjectContext) 
     let userObj = User(entity: entityObj!, 
      insertIntoManagedObjectContext: managedObjectContext) 

     userObj.username = name.text 
     userObj.password = password.text 
     userObj.email_cell = cell.text 

     if managedObjectContext.hasChanges 
     { 
      do 
      { 
       try managedObjectContext.save() 
       let error: NSError? = nil 

       if let err = error 
       { 
        print("%@",err.localizedFailureReason) 
        print("Could not saved \(error), \(err.userInfo)") 

       } else { 
        name.text = "" 
        password.text = "" 
        cell.text = "" 
        print("User info Saved") 

        performSegueWithIdentifier("loadManageAccountSegue", sender: nil) 
       } 
      } 
      catch 
      { 
       let nserror = error as NSError 
       NSLog("Unresolved error \(nserror), \(nserror.userInfo)") 
       abort() 
      } 
     } 
    } 
} 

Мой Entity моментальный снимок

enter image description here

Смежные вопросы