2011-04-13 27 views
1

代表小時範圍我試圖創建一個代表Obj-C程序運行小時數的類。我一直在考慮使用NSDatesComponent來做到這一點,但我覺得應該有一個更簡單的方法。有沒有人有任何提示如何做到這一點?Objective-C

在覈心數據中,我將有一個shop實體,該實體將具有一個數組。該陣列每週的每一天都有七個條目,每天的值將是代表一個小時範圍的hoursOp對象。 9-5,10-6等。問題是,我不知道如何創建我的hoursOp類來表示一個小時的範圍。我正在考慮使用NSDateComponents,但我不確定是否應該打擾。目前,我認爲一個hoursOp對象應該包含兩個變量:開始時間和結束時間。

此外,由於陣列條目中可能需要多個hoursOp對象,所以這很複雜 - 如果shop的運行小時數爲10-4,則運行時間爲6-8?因此,而不是一個包含hoursOp對象的數組,它將是一個二維數組,其中每個條目都是它自己的一個數組,其中包含1個或更多個hoursOp對象。這有點令人費解,但我相信一旦我找出如何表示小時(或範圍本身,如果有人有更好的建議),我就可以實現它。

+0

您是否需要編碼一週的某一天?在什麼決議? – yan 2011-04-13 20:36:00

+0

我已更新我的描述。 – 2011-04-13 20:47:14

回答

0

這就是我最終做的,只使用NSDateNSDateFormatter,其中open是在軍事時間格式化的NSString

-(void) setOpeningTimeWithString: (NSString *)open 
{ 
    NSDateFormatter * formatFromInput = [[NSDateFormatter alloc] init]; 
    [formatFromInput setDateFormat:@"HH:mm"]; 
    self.openingTime = [formatFromInput dateFromString:open]; 
    [formatFromInput release]; 
} 

外賣的教訓是,這是完全沒關係有NSDate對象,你只設置其他的每小時組件 - 一切只設置爲1970年1月1日,它不會引起任何問題。

0

很難說實現這一點的「最佳」方式,因爲它取決於您對數據的處理方式,但如果您存儲了星期幾,在您的對象內部打開時間和關閉時間,您可以擁有一個hoursOp對象的一維數組,表示商店打開時的時間間隔。

您會失去數組索引和星期幾之間的一對一關係,這可能會使一些任務更難(例如,如果您經常在週六的商店營業時間查詢此對象,你會掃描整個數組),但否則你會走上擁有一組數組的路徑。

+0

夠公平的。這是否意味着我不應該用NSDate來代表小時? – 2011-04-13 23:54:39

+0

'NSDateComponents'可能會矯枉過正,但是時間和分鐘等字段可能會派上用場 - 即使它比我(當前)需要的更多,我可能會在使用內置類時犯錯。 – 2011-04-21 23:46:49