2017-01-23 13 views
0

まず、XCodeの新機能です。私はコーディングクラスを取っている高校生です。ここで古いSwift Coreデータチュートリアルで作業するコードを取得できません。

はチュートリアルです:https://www.raywenderlich.com/115695/getting-started-with-core-data-tutorial

あなたは私が新しいスウィフトの更新に合わせて自分のコードを更新助けてくださいことはできますか?

エラー: "タイプAppDelegateの価値は何のメンバーmanagedObjectContextを持っていない"

ライン私に与えてエラー:私はこれを削除し、でそれを置き換えるしかし

let appDelegate = 
      UIApplication.shared.delegate as! AppDelegate 
    let managedContext = appDelegate.managedObjectContext 

let delegate = UIApplication.shared.delegate as! AppDelegate 
let managedObjectContext = delegate.persistentContainer.viewContext 

多くのエラーがポップアップします。

私の完全なコード:

import UIKit 
import CoreData 

class ViewController: UIViewController, UITableViewDataSource 
{ 
    @IBOutlet weak var tableView: UITableView! 

    @IBAction func addName(_ sender: Any) 
    { 
     let alert = UIAlertController(title: "New Name", message: "Add a new name", preferredStyle: .alert) 

     let saveAction = UIAlertAction(title: "Save", style: .default, handler: 
      { 
       (action:UIAlertAction) -> Void in 
       let textField = alert.textFields!.first 
       self.saveName(name: textField!.text!) 
       self.tableView.reloadData() 
     }) 

     let cancelAction = UIAlertAction(title: "Cancel", style: .default) { 
      (action: UIAlertAction) -> Void in 
     } 

     alert.addTextField 
      { 
       (textField: UITextField) -> Void in 
      } 

     alert.addAction(saveAction) 
     alert.addAction(cancelAction) 
     present(alert, animated: true, completion: nil) 
    } 

    func saveName(name: String) 
    { 
     let appDelegate = UIApplication.shared.delegate as! AppDelegate 

     let managedContext = appDelegate.managedObjectContext 

     let entity = NSEntityDescription.entityForName("Person", inManagedObjectContext:managedContext) 

     let person = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext) 

     person.setValue(name, forKey: "name") 

     do 
     { 
      try managedContext.save() 
      people.append(person) 
     } 
     catch let error as NSError 
     { 
      print("Could not save \(error), \(error.userInfo)") 
     } 
    } 

    var people = [NSManagedObject]() 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
     title = "\"The List\"" 
     tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell") 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func viewWillAppear(_ animated: Bool) { 
     super.viewWillAppear(animated) 

     //1 
     let appDelegate = 
      UIApplication.shared.delegate as! AppDelegate 

     let managedContext = appDelegate.managedObjectContext 

     //2 
     let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Person") 

     //3 
     do { 
      let results = 
       try managedContext.executeFetchRequest(fetchRequest) 
      people = results as! [NSManagedObject] 
     } catch let error as NSError { 
      print("Could not fetch \(error), \(error.userInfo)") 
     } 
    } 

    func tableView(_ tableView: UITableView, 
        numberOfRowsInSection section: Int) -> Int { 
     return people.count 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    { 

     let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") 

     let person = people[indexPath.row] 

     cell!.textLabel!.text = person.value(forKey: "name") as? String 

     return cell! 
    } 

    override func didReceiveMemoryWarning() 
    { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 
+0

[OK]を、私はそれを更新した – muescha

+0

あなたの投稿を取得エラーを追加してください! –

+0

AppDelegate.swiftファイルの内容も含めて、「多くのエラーが発生しました」というメッセージが表示されるようにしてください。 – jrturton

答えて

0

あなたは、最新のスウィフト構文AACoreDataのために(私が書いた)簡単なライブラリを使用することができます。 は、単により多くのガイドやドキュメントについては

AACoreData.sharedInstance().dataModel = "YourEntity" 

、ライブラリをインストールした後、あなたのデータモデルを割り当てる公式リポジトリAACoreDataをご覧ください。

関連する問題