2017-06-05 16 views
0

データを警告なしで保存していますが、データを取得しようとすると何も表示されません。私は問題が何であるかは分かりません。私は、配列を確認しましょう、それがこの警告を与えている:Swift 3:コアデータ "data:<fault>"問題

<Sepet: 0x60000028ab40> (entity: Sepet; id: 0xd000000000240000 <x-coredata://5CDE7285-D461-44FD-AA49-DC6C5A61A9D8/Sepet/p9> ; data: <fault>)] 

これは、コアデータを保存するための私のコードです:

@IBAction func addToCardAction(_ sender: UIButton) { 
     let cell = sender.superview?.superview as! SiparisVerTableViewCell 

     if cell.countLabel.text == "0"{ 
      print("0'dan büyük olmalı") 
     }else{ 

      let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext 

      let task = Sepet(context: context) 
      task.menuimage = "turk-telekom" 
      task.details = cell.detailsTextView.text! 

      if cell.detailTextField.text == ""{ 
       task.customerDetails = "Açıklama yok." 
      }else{ 
       task.customerDetails = cell.detailTextField.text! 
      } 

      task.count = cell.countLabel.text! 
      task.price = cell.priceLabel.text! 

      print(cell.menuImageView, cell.detailsTextView.text, cell.detailTextField.text, cell.countLabel.text, cell.priceLabel.text) 
      // Save the data to coredata 
      print("saved") 
      (UIApplication.shared.delegate as! AppDelegate).saveContext() 
     } 
    } 

そして、これは、データとtableView実装を取得するためのコードです:

func getData() { 
    do { 
     sepetContents = try context.fetch(Sepet.fetchRequest()) 
     print(sepetContents) 
    } 
    catch { 
     print("Fetching Failed") 
    } 
} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "sepetCell", for: indexPath) as! SepetTableViewCell 
    let sepetim = sepetContents[indexPath.row] 


    if let image = sepetim.menuimage, let details = sepetim.details, let customerDetails = sepetim.customerDetails, let price = sepetim.price, let count = sepetim.count { 
     cell.menuImageView?.image = UIImage(named: image) 
     cell.detailsTextView.text = details 
     cell.customerDetailsLabel.text = customerDetails 
     cell.priceLabel.text = price 
     cell.countLabel.text = count 
    } 

    return cell 
} 

答えて

0

フォールトは何も悪いことではありません。つまり、オブジェクト全体がコアデータから読み込まれず、基本メタデータだけがロードされているということです。これが最適化手段です。必要なプロパティにアクセスすると、自動的にロードされます。

とにかくプロパティを必要としていることがわかっている場合は、もちろんフェッチ要求をパラメータ化して関係をプリロードできます。

正確には機能しません。オブジェクトがデバッガで完全に印刷されないという問題がある場合は、残念ながらそれはどのようなものですか、LLDBはオブジェクトを保護しません。

+0

私のセル識別子が不足していることがわかりました。ご回答有難うございます。 – winner

関連する問題