2016-04-13 11 views
0

コアデータに文字列を追加しようとすると、タイトルエラーが発生します。ここに私のコードは次のとおりです。解放されたインスタンスに送信されたメッセージコアデータ

cell!.textLabel!.text = transaction.valueForKey("name") as? String 

そして、これは完全なエラーの説明です:

func save(name: String) { 
     let model = CoreDataModel(modelName: modelName, modelBundle: modelBundle!, storeType: .SQLite(DocumentsDirectoryURL())) 
     let factory = CoreDataFactory(model: model) 

     let context = factory.createContext() 
     let entity = NSEntityDescription.entityForName("Transaction", inManagedObjectContext: context) 
     let transaction = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: context) 

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

     do { 
      try context.save() 
      transactions.append(transaction) 
     }catch let error as NSError { 
      print(error) 
     } 
    } 


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell") 

    let transaction = transactions[indexPath.row] 
    print(transaction) 
    cell!.textLabel!.text = transaction.valueForKey("name") as? String 

    return cell! 
} 

エラーは、このライン上にある

<NSManagedObject: 0x7f9d5c216a90> (entity: <null>; id: 0xd000000000040000 <x-coredata://442A125F-AB41-4CA3-AAA5-A5C59840D5EE/Transaction/p1> ; data: <fault>) 
2016-04-13 19:25:29.207 Project1[22981:2242560] *** -[NSEntityDescription _entityClass]: message sent to deallocated instance 0x7f9d5c2089e0 

誰もが、私はこれを取得していますなぜアイデアを持っています?

+0

作成した管理対象オブジェクトを追加するのではなく、各更新後にトランザクションストアをデータストアからフェッチする必要があります。 –

+0

は後でそれを行いますが、最初の項目を追加するときにこの問題を修正しようとしています。 – Kobe

答えて

0

私がNSManagedObjectContextをローカルに作成して保存するには、最初の3行をViewDidLoadに移動し、クラスメンバーとしてcontextを宣言しなければならなかったようです。

Thisスレッドは私がそれを理解するのを助けました。

+0

それは私が意味していたもののようなものです:)) –

関連する問題