好的,這是一個我無法弄清的奇怪的錯誤。我從核心數據實體獲取費用。然後我在日期排序這些結果。我使用這個排序的結構來獲取正確的數據,以獲得tableView中正確的部分和行。此代碼全部正常工作,TableView插座中的單元格在cellForRowAtIndexPath中正確填充。但是,當一個單元格退出tableView(=排隊),然後再次加載回去(=離隊)時,我無法訪問費用和它的關係了...... 讓我進一步解釋:這裏的核心數據結構故障 - 核心數據只能在使用UITableView時訪問對象一次
extension Category {
@NSManaged var name: String?
@NSManaged var catHasExpenses: NSOrderedSet? }
extension Expenses {
@NSManaged var amount: NSNumber
@NSManaged var name: String?
@NSManaged var date: NSDate
@NSManaged var expenseHasCat: Category }
我獲取數據並對其進行排序。這段代碼仍然正常工作,所以繼續前進。當其對數據結構進行排序時。
var expensesDictionary = ([(NSDate, Expenses)])() //Array of tuples
然後當單元格加載時我想訪問expenseHasCat關係。第一次加載表格時一切正常。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("expensesCell", forIndexPath: indexPath) as! CustomExpensesTableViewCell
let pos = getPositionInDictionary(indexPath.section, row: indexPath.row)
// set Category image - imageName = expenseHasCat.name
var expense = self.expensesDictionary[pos].1
NSLog("\(expense)") //check printout below
cell.expenseCategory.image = UIImage(named: (expense.expenseHasCat.name)! as String);
return cell
}
但由於某些原因如果單元格熄滅的tableView的和被裝回後,我再也不能訪問的費用。它說它是零,而解包可選。我無法弄清楚爲什麼會這樣。 expenseDictionary根本沒有改變。我只是無法弄清楚爲什麼它會在第一次運行,但不是第二次。
任何人都會盯上這裏發生的事情嗎?
更新! - 故障必須在基地問題...
我只注意到打印的費用在self.expensesDictionary對象 [POS] .1一個無法觸發故障或值現在不知何故無...第一次打印是當它加載時,第二次,如果它無法加載。任何人都知道如何從錯誤中提取數據?
<x-coredata://9FBBD46A-CD75-4DAB-A796-5BA945927C9A/Expenses/p23>
; data: {
amount = 8;
date = "2015-11-14 21:57:51 +0000";
expenseHasCat = "0x7ba6a310 <x-coredata://9FBBD46A-CD75-4DAB-A796-5BA945927C9A/Category/p8>";
name = nil;
})
(entity: Expenses; id: 0x7ba71b00
<x-coredata://9FBBD46A-CD75-4DAB-A796-5BA945927C9A/Expenses/p23>
; data: <fault>)
我還不找到一個解決方案
線程堆棧的位置:https://www.dropbox.com/s/zvpvlcsqjpqcxns/Screenshot%202015-11-16%2015.42.09.png?dl=0
錯誤不是問題。這就是核心數據的工作原理,「故障」一詞並不意味着有什麼問題。請參閱http://stackoverflow.com/questions/7304257/coredata-error-data-fault/7304350#7304350 – jrturton
這個問題可能在你的相當混亂的字典裏面 - 這是一個實際上是一個元組數組,但是確保你需要添加一個異常斷點並找出解包失敗的行。 – jrturton
每次嘗試第二次訪問屬性時都會啓動該錯誤。 Expense對象的打印輸出就像第二個打印語句。我知道故障只是核心數據的內存保存功能。但由於某些原因,在第一次正確訪問它之後,它不能再訪問它的屬性。該對象沒有以任何方式修改。我會讓代碼更具可讀性。 –