我已經搜索過,仍然沒有發現任何相當有效的東西。問題/答案太舊了,或者它根本不適合我。這是我第一次嘗試「我自己的」應用程序。因爲它似乎是通過的權利,我正在製作一個清單應用程序。下面是我在尋找:iOS核心數據 - 更新多個記錄
我的數據存儲庫包含4個屬性:name, category, isChecked, isActive
(更多必將隨之而來,因爲我擴大)
當我的視圖控制器最初的負荷,NSFetchedResultsController
有NSPredicate
,僅檢索記錄其屬性isActive
爲YES(或[NSNumber numberWithBool:YES
)。然後它將這些記錄顯示給用戶的適當單元格。當用戶單擊一個單元時,Data Store會相應地更新並更改isChecked
屬性。一切都很好,至此。
我現在需要做的是能夠從列表中刪除項目(1或更多)。具體而言,我需要它將數據存儲屬性isChecked
和isActive
更新爲NO,只有當它的當前isChecked
屬性爲YES時。 (我並不想從數據存儲刪除記錄,因爲它們將被用來建立,爲用戶未來使用的數據庫。)
我用過,除其他事項外:
[[[self fetchedResultsController] fetchedObjects]
setValue:[NSNumber numberWithBool:NO]
forKey:@"isChecked"];
這確實有效,它會刪除選中標記並相應地更新商店。問題是,我不僅向isActive
項目的數據存儲庫發出另一個請求,還會搜索已提取的整個「活動列表」,並將它們的每個isChecked
屬性設置爲「否」。這對於小列表來說可能不是太大,但是隨着列表的擴展,這可能是一個問題。
另一個問題是,如果我添加:(以及同樣的方法中的第二數據存儲請求)
[[[self fetchedResultsController] fetchedObjects]
setValue:[NSNumber numberWithBool:NO]
forKey:@"isActive"];
它集我名單中所有項目沒有
所以我問題是:如何才能通過列表,找到僅檢查的項目並只更新那些記錄(同時設置isChecked & & isActive attributes = NO),其isChecked
屬性爲YES,而不是遍歷整個列表?我試過創建一個單獨的fetchedResultsController專門爲這個按鈕操作,它確實工作(也就是說,它沒有崩潰),但調試器彈出一個相當大的'嚴重的應用程序錯誤'。我不會發布錯誤消息,因爲它很長,很可能與任何解決方案無關。
任何援助將不勝感激。預先感謝,請溫柔: - ]。
編輯
我已經使用for
循環,for (NSString *item in fetchedResultsController)
嘗試,但我得到的錯誤...may not respond to 'countByEnumeratingWithState:objects:count'
看來各種各樣的循環是這裏的所需要的,但同樣,沒有什麼我能找到的有關或者已經過時了。再次感謝您的幫助。
編輯2
這裏是原來的錯誤我,當我跑第二個單獨的fetchRequestController此按鈕/方法:
An exception was caught from the delegate of NSFetchedResultsController during a call to -controllerDidChangeContent:. Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (4) must be equal to the number of rows contained in that section before the update (4), plus or minus the number of rows inserted or deleted from that section (0 inserted, 3 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out). with userInfo (null)
我想這一點,使用'ActiveListData'這是我NSManaged子類的名稱,但得到了錯誤'異常在覈心數據更改處理期間被捕獲。這通常是NSManagedObjectContextObjecsDidChangeNotification觀察者中的一個錯誤。 userInfo(null)在索引0處的索引3處沒有對象。查看我的編輯上面的原始錯誤,我爲此創建了一個單獨的「fetchRequestController」。 – 2013-02-15 09:19:30
是啊,我看着蘋果開發文檔和有信息的TON,但一大堆的理論都要經過找一個實際的例子(如果有曾經是一個例子)。至少在這裏,我可以把我需要的東西放到一個環境中,並得到一個相對直接的答案。我讀了開發文檔盡我所能,但它並不總是最容易的地方的答案 – 2013-02-15 09:25:47
是什麼fetchedObjects返回?它是一個NSArray? – ggfela 2013-02-15 09:44:19