NSDate/NSDateFormatter
等人似乎對於常見任務需要太多的代碼行。NSDate - 有什麼更好的?
對於iOS的開發,有沒有更好的東西,比如DateJS for JavaScript?
這裏有公共的NSDate用法,其中典型的解決方案可能是如至少兩次小的一些例子:
- 從整數創建的NSDate。解決方案:SO Answer 1
- 從NSDate獲取年/月/日。解決方案:SO Answer 2
- SO上有更多這些常見的情況。
NSDate/NSDateFormatter
等人似乎對於常見任務需要太多的代碼行。NSDate - 有什麼更好的?
對於iOS的開發,有沒有更好的東西,比如DateJS for JavaScript?
這裏有公共的NSDate用法,其中典型的解決方案可能是如至少兩次小的一些例子:
我不認爲有更好的方式本地處理日期。但是你可以做的是在NSDate上創建幾個類別,以便更容易地處理日期,如果你發現自己經常重複相同的代碼行,這是特別有用的。
編輯:這裏有幾個例子:
NSDate的是高效,高生產力,特別是在與NSDateFormatter和NSCalendar結合起來,雖然你可以認爲後者班級非常臃腫,「慢」,他們非常深。
你有什麼具體的投訴?
首先,您有權要求提供具體的投訴,我已經添加了一個鏈接來嘗試和說明。
其次,我沒有看到相對於其他語言的日期類,NSDate如何被認爲是高效的。您是否將生產力與Java/C#/ Javascript進行了比較?不是在談論原始性能,而是在說你的生產力。 –
Lee
與JavaScript相比,NSDate更好。沒有Java或C#的經驗,所以不能評論。但是NSDate(以及相關的API)非常有用和高效。可能有點神祕但理解力強。 –
我指的是使用DateJS的JavaScript日期處理,它實際上使日期變得愉快。是的,它是一個插件/幫手,但這就是我的觀點,爲什麼不在ObjC中有這樣的幫手,這樣每個人都不必創建自己的類別?猜想那裏的解決方案需要更多的動力/採用才能成爲事實上的使用。 – Lee
至於使用類別提取的NSDate的年/月/日,一個例子:
的NSDate + ComponentsExtractor.h:
#import <Foundation/Foundation.h>
typedef struct
{
NSInteger year;
NSInteger month;
NSInteger day;
} dateComponents;
@interface NSDate (ComponentsExtractor)
+ (dateComponents)componentsFromDate:(NSDate *)theDate;
@end
的NSDate + ComponentsExtractor.m:
#import "NSDate+ComponentsExtractor.h"
@implementation NSDate (ComponentsExtractor)
+ (dateComponents)componentsFromDate:(NSDate *)theDate
{
NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *components = [gregorian components:unitFlags fromDate:theDate];
dateComponents theComponents;
theComponents.year = [components year];
theComponents.month = [components month];
theComponents.day = [components day];
return theComponents;
}
@end
利用的CA tegory:
NSDate *theDate = [NSDate date]; // use the current date ...
dateComponents components = [NSDate componentsFromDate:theDate];
NSLog(@"%i - %i - %i", components.year, components.month, components.day);
我相信間接指針可以作爲很好地實現類似的結果,但不需要一個結構 - 這取決於任何一個作爲「乾淨」的解決方案方面。
你能給我們更多具體的投訴嗎?否則,除了陳詞濫調之外,很難提供任何東西。 – Tommy
那是多少代碼?你想做什麼 ? – Legolas
增加了兩個典型解決方案的例子。 「太多的代碼行」已被澄清,意味着它可以容易地是一半或更少的字符。 – Lee