2017-06-05 37 views
0

我在没有任何警告的情况下保存数据,但是当我尝试获取数据时,我什么也得不到。我不明白问题所在。我查一下我的阵列和它给这样的警告:Swift 3:核心数据“数据:<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