2014-02-20 61 views
0

我有一個使用MagicalRecord訪問的核心數據模型。我用這個代碼來獲得按類別排序和分組的一個實現代碼如下:ios MagicalRecord排序。需要節標題列表

frc = [ListActivity MR_fetchAllSortedBy:@"activityCategory,activityName" 
            ascending:YES withPredicate:nil 
            groupBy:@"activityCategory" 
            delegate:nil]; 

所得的tableview看起來是這樣的:

enter image description here

另一種觀點認爲,我用的是同樣的數據,但是這一次只需要由屬性「activityCategory」表示的節標題列表。我認爲這是一件簡單的事情,但並非如此。此代碼,例如:

產生這樣的:

enter image description here

相反,我要的只是一個類別(奇異),即提供部分標題中出現的屬性列表第一個例子。我嘗試了其他幾種配置,但是意識到我只是把東西扔到牆上,看它是否會粘住。 MagicalRecord的文檔與框架一樣出色,但可惜的是缺乏。

有人可以指點我的解決方案嗎?

謝謝!

回答

0

我最好的猜測是你需要在取消結果控制器之前配置你的獲取請求。 MagicalRecord使用命名約定,如果您將find更改爲request,它將返回NSFetchRequest對象。因此,對於你的情況在這裏,你會需要像

NSFetchRequest *request = [ListActivity MR_requestAllSortedBy:@"activityCategory" ascending:YES inContext:context]; 
[request setResultType:NSDictionaryResultType]; 
[request setReturnsDistinctResults:YES]; 
frc = [[NSFetchedResultsController alloc] initWithFetchRequest:request 
              managedObjectContext:context 
              sectionNameKeyPath:nil 
                cacheName:nil]; 
[frc MR_performFetch]; 
+0

感謝您的迴應!我嘗試了你的代碼,添加了一個上下文,但是得到了這個錯誤:「'NSFetchedResultsController'沒有可見的@interface聲明選擇器'MR_performFetch'」我也找不到對該選擇器的任何快速幫助。我是否失去了MagicalRecord的鏈接? – rattletrap99

+0

它可能是該方法不是公開的,我引用最新的代碼,但我知道該方法在那裏;破解源代碼並看看。 – casademora

+0

該方法確實存在,但由於某種原因鏈接程序找不到它。或者還有另一個問題。我試過清理它,檢查了Build Phase中列出的相關文件(NSManagedObject + MagicalRecord.m),確保在「-Prefix.pch」文件中導入了「CoreData + MagicalRecord.h」並重新啓動了Xcode。仍然得到錯誤。 – rattletrap99

0

你可能要考慮有ListActivityCategory實體以及存儲類別爲String上ListActivity

這種方法你可以獲取這些而不是迴避所有返回的「唯一」ListActivity對象

+0

我是Core Data和MagicalRecord的新手。您是否建議數據模型中的實體之間存在關係?如果是這樣,聽起來可行,但我從來沒有這樣做過。你能提供一個片段嗎? – rattletrap99

+0

如果你是谷歌,我肯定有很多很好的教程。 –

+0

我知道,Mike,我一直在關注Lynda.com上的Simon Allardice的課程。目前,我正在嘗試做出決定採用哪種方法 - 使用casademora建議的方法糾正錯誤,或者創建一個新的實體,這聽起來也很有希望。當我清除它時,我會發布解決方案。謝謝! – rattletrap99