まず、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.
}
}
[OK]を、私はそれを更新した – muescha
あなたの投稿を取得エラーを追加してください! –
AppDelegate.swiftファイルの内容も含めて、「多くのエラーが発生しました」というメッセージが表示されるようにしてください。 – jrturton