2011-09-28 57 views
0

部分我有一個核心數據實體,稱爲事件和兩個相關的屬性被稱爲的startDateTimeCOUNTRYCODE。我的問題是我的表格視圖中的部分需要按日期和國家代碼進行分組。我已經看到很多關於如何實現按日分組的例子(例如Apple的DateSectionTitles),但是當我添加國家代碼時,它變得更加複雜。分組表視圖白天和國家

我用一個短暫的sectionIdentifier作爲DateSectionTitles例如推薦和部分看起來是這樣的: 「20110928 SE」, 「20110929 SE」, 「20110928 GB」 等

我第一次嘗試這樣的:

NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"startDateTime" ascending:NO]; 
NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"countryCode" ascending:NO]; 
sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1, nil]; 
[sortDescriptor1 release]; 
[sortDescriptor2 release]; 

但是這不起作用,因爲startDateTime有一個導致索引不匹配的時間組件。我需要的是排序startDateTime沒有時間組件。

顯而易見的解決方案是將日期和時間分隔成兩個不同的實體屬性。但是當我考慮到這一點時,由於日期與時區有關,所以不起作用。當電話更改時區時,日期和時間屬性將失效。

我也嘗試子類化一個NSSortDescriptor並創建一個自定義的compareObject函數,但它似乎永遠不會被調用,我找不到任何工作示例。

你會如何解決這個問題?分類的NSSortDescriptor是要走的路,還是可能有更聰明的方法?

回答

0

使用一種方法在NSDate上創建一個類別,該方法從僅返回一天的日期開始剝離時間。將這個:

2011-09-29 09:53:28 -0500 

...這樣的:

2011-09-29 

然後設置您的排序鍵dateAttribute.methodName

+0

他不知道我可以使用這樣的點。我現在就試試看。 – Heinemeister

+0

哇,它的作品!非常感謝TechZen!當我的聲望允許的時候,它會升級。 – Heinemeister