2017-09-19 5 views
1

私はテーブルビューを持っています。そのクリックの上には、textFieldの警告がポップアップし、textFieldにいくつかのデータを入力できるボタンがあります。 「OK」をクリックすると、alertviewの内容がtableviewに入力されます。私はこのデータをCoreDataにも格納しています。テーブルビュー上に持続データ(coredataに保存されている)の問題

しかし、別の画面に移動したりアプリケーションを終了していても、アプリケーションを閉じたり別の画面に移動したりすると、テーブルビュー内のデータが消えて画面に残りますCoreDataに格納されていました。

何を行う必要がありますか?助けてください...

はまた、これは私がデータを保存しています方法です:私の知る限り、これがある場合は、coredataに入力した古いデータは、テーブルビューに表示されていない理解し

guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { 
      return } 
let managedContext = appDelegate.persistentContainer.viewContext 
let entity = NSEntityDescription.entity(forEntityName: "Category", in: managedContext) 
let category = NSManagedObject(entity: entity!, insertInto: managedContext) 

category.setValue(categoryName, forKeyPath: "categoryName") 
category.setValue(categoryId, forKey: "categoryId") 

    do { 

    try managedContext.save() 
    self.managedObject.append(category as! Category) 
    } catch let error as NSError { 
    print("Could not save. \(error), \(error.userInfo)") 
    } 
+1

を取得するコードの下

使用することは、より良いレスポンス –

+0

のためのあなたのコードは、管理対象オブジェクトコンテキストを保存していませんを示してください? – Paulw11

+0

@ Paulw11データを取得して、画面にアクセスするたびにテーブルビューに表示されるようにする必要がありますか? –

答えて

1

TableViewはデータを保持しないため、正しく動作します。データはcoreDataに保持されます.CoredataからデータをフェッチしてTableViewにロードするだけで済みます。

var category = [Category]() // Where Category = your NSManaged Class 

    var fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Category") 

    do { 
     category = try context.fetch(fetchRequest) as! [Category] 
    } catch { 
     fatalError("Failed to fetch category: \(error)") 
    } 

// Then you can use this array to populate UITableView Datasource and Call. 
arrTableView = category 
tableView.reloadData() 
+0

それは@sudhirクマー、機能していません。 3行目の構文は正しくありません。 –

+0

私に言ってくれてありがとう、私は自分のコードを編集しました。この助けが –

+0

にはまだ問題があるように思う、@Sudhirクマール。この行は、 'arrTableView = category'というエラーをスローします。なぜなら、tableviewの要素を持つ配列は文字列型であり、 'category'は 'Category'型です。配列の文字列型をCategory型の配列に変更すると、他の多くの場所にも影響します。:( –

関連する問題