2011-08-05 87 views
0

有沒有人對我面臨的這個問題有任何提示。它並不複雜,但在Core Data中可能會有更簡潔的方法。在覈心數據中彙總幾周到幾周

我有一個包含日期和值的數據表(或託管對象)。我通常顯示每天的這些數據以及每天的價值。

我想在幾周內對此進行分組,以聚合具有一定數量的一週的所有行。

示例:我的數據是當前顯示這樣

  • 8月5日| 5
  • Aug 4 | 18
  • Aug 3 | 8
  • Aug 2 | 3
  • 八月1 | 10
  • Jul 31 | 2
  • 七月30 | 1
  • Jul 29 | 7
  • 七月28 | 6

等等等等

我想,像這樣顯示出來:24

  • 周| 47
  • 第23周| 13
  • 第22周| 20

等等等等

我已經使用NSFetchedResultsController,並想繼續儘可能使用這個。我認爲這是困難所在。如果我只是展示一個UITableView和一個NSArray數據,這將很容易將我的值加起來並呈現數據。但是,NSFetchedResultsController似乎與獲取結果相關聯(顯然),所以我想我想使用fetch來彙總這些數據,這樣我就可以像原始數據那樣將它鉤入我的表視圖中。

有什麼建議嗎?

謝謝

+0

爲了進一步闡明,您希望一個表格視圖單元格包含有關一週的信息,並且您的數據每天都保留下來? – bshirley

+0

那是正確的。通常1個細胞是1天,但我想要1個細胞包含1周。我不擁有數據,這是我如何檢索它 - 所以我沒有控制它,除了操縱一次,我檢索它。 – bandejapaisa

回答

0

我這樣做,但有點醜陋的方式。但它的工作原理,我需要得到它快速工作...

因爲我想繼續使用我的FetchedResultsController,我創建的所有架構將它連接到我的視圖控制器,似乎更容易我的周和月有不同的實體。

我知道它通過存儲可以計算的數據而違背數據存儲原則,但這樣做相對容易。

我有我的UsageDay託管對象,這是大部分數據。然後我有一個UsageWeek和UsageMonth對象。

當我存儲一個UseDay對象,從它的日期伊娃,我計算它的weekOfYear和monthOfYear(和年)的UsageWeek和UsageMonth。

UsageWeek包含:weekOfYear,year和它包含的UsageDay對象的NSSetUsageMonth包含:monthOfYear,year和它包含的UsageDay對象的NSSet。

然後,我可以很容易地獲得所有UsageWeek的列表,其中有一組7個UsageDay對象 - 我在其上調用[usageWeek valueForKeyPath:@「usageDaySet。@ sum.value」] - 它給出了我的總數。工作正常。

隨意公開批評這個設計 - 我期待它!

0

親愛的,這是一個非常大的交易。試想一下用戶可能擁有的許多不同的日曆。但是,儘管如此,日期還是以秒爲單位的1970年以來的時間戳。你可以嘗試用coreDataDate % (86400*7) // seconds per day * 7 days來計算。
通過模數計算它會自動分組七天。但請記住,有很多案例可以預見,例如一些國家的冬季/夏季時間變化。

+0

你真的不想在日期上做任何算術運算,這就是'NSDate'和[NSCalendar](http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/ NSCalendar_Class/Reference/NSCalendar.html#// apple_ref/occ/cl/NSCalendar)是爲了從你那裏抽象出來的。查看'+ currentCalendar'和'-components:fromDate:'。 – bshirley

+0

親愛的,我不得不面對的唯一日曆就是我在應用中支持的語言。我沒有在這裏寫框架。 – bandejapaisa

+0

日曆將爲您處理邊緣情況(如果這很重要),閏年,夏令時等 – bshirley

0

(前言:有沒有「表」,在CoreData)

如果修改了數據模型提供了一個派生屬性(它可以在自定義子類,而無須進行建模),它定義了一週。也許weekOfYear。然後你想按周和年分組。

+0

「沒有表格」 - 你說得對,除了它有一個數據庫sqllite支持的地方有表格,並且它使用UITableView來展示 - 這顯然是一個表格。因此概念上核心數據中沒有表格 - 但實際上,它是表格數據。我不會特別想把它分成幾個部分 - 但是彙總的數據 - 我會用一個例子編輯我的文章。 – bandejapaisa

0

我會研究創建一種方法,它使用NSCalendar和NSDateComponents的組合來查找屬於一週的日子,然後使用BETWEEN語句使用NSPredicate來獲取那一天的日子。如果日期是NSDate格式,這會更容易,但如果不是,您可以輕鬆轉換。

當我不得不從一個核心數據存儲中爲時間卡應用程序抽出一週的所有日子時,我使用了非常相似的東西。

+0

是的,我正在使用這些。看到我自己的答案。看起來我雖然很笨拙。 – bandejapaisa