NSCalendar 日历那点事 一次解决


NSCalendar *currentCalendar = [NSCalendar currentCalendar];
    currentCalendar.locale = [NSLocale localeWithLocaleIdentifier:@"zh_CN"];
    
    currentCalendar.firstWeekday = 1;
    
    NSArray *weekSymbols = [currentCalendar standaloneWeekdaySymbols];
    NSLog(@"week symbols:\n%@",weekSymbols);
    
    NSArray *shortWeekdaySymbols = [currentCalendar veryShortStandaloneWeekdaySymbols];
    NSLog(@"shortWeekdaySymbols:\n%@",shortWeekdaySymbols);
    
    NSDate *now = [NSDate date];
    
    NSUInteger numberOfDaysThisMonth = [currentCalendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:now].length;
    
    NSUInteger numberOfWeeksThisMonth = [currentCalendar rangeOfUnit:NSCalendarUnitWeekOfMonth inUnit:NSCalendarUnitMonth forDate:now].length;
    NSUInteger numberOfWeeksThisYear = [currentCalendar rangeOfUnit:NSCalendarUnitWeekOfYear inUnit:NSCalendarUnitYear forDate:now].length;
    
    NSUInteger ordinalDay = [currentCalendar ordinalityOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:now];
    
    NSDate *firstThisMonth;
    BOOL result = [currentCalendar rangeOfUnit:NSCalendarUnitMonth startDate:&firstThisMonth interval:NULL forDate:now];
    NSDateComponents *components = [currentCalendar components:NSCalendarUnitWeekday fromDate:firstThisMonth];
    
    
    NSDate *firstThisWeek;
    result = [currentCalendar rangeOfUnit:NSCalendarUnitWeekOfMonth startDate:&firstThisWeek interval:NULL forDate:now];
    
    currentCalendar.firstWeekday = 2;
    NSDate *firstThisWeek2;
    result = [currentCalendar rangeOfUnit:NSCalendarUnitWeekOfMonth startDate:&firstThisWeek2 interval:NULL forDate:now];

TDD for iOS[Kiwi]

Kiwi

测试驱动开发(Test Driven Development,以下简称TDD)是保证代码质量的不二法则,也是先进程序开发的共识。Apple一直致力于在iOS开发中集成更加方便和可用的测试,在Xcode 5中,新的IDE和SDK引入了XCTest来替代原来的SenTestingKit,并且取消了新建工程时的“包括单元测试”的可选项(同样待遇的还有使用ARC的可选项)。新工程将自动包含测试的target,并且相关框架也搭建完毕,可以说测试终于摆脱了iOS开发中“二等公民”的地位,现在已经变得和产品代码一样重要了。我相信每个工程师在完成自己的业务代码的同时,也有最基本的编写和维护相应的测试代码的义务,以保证自己的代码能够正确运行。更进一步,如果能够使用TDD来进行开发,不仅能保证代码运行的正确性,也有助于代码结构的安排和思考,有助于自身的不断提高。我在最开始进行开发时也曾对测试嗤之以鼻,但后来无数的惨痛教训让我明白那么多工程师痴迷于测试或者追求更完美的测试,是有其深刻含义的。如果您之前还没有开始为您的代码编写测试,我强烈建议,从今天开始,从现在开始(也许做不到的话,也请从下一个项目开始),编写测试,或者尝试一下TDD的开发方式。

而Kiwi是一个iOS平台十分好用的行为驱动开发(Behavior Driven Development,以下简称BDD)的测试框架,有着非常漂亮的语法,可以写出结构性强,非常容易读懂的测试。因为国内现在有关Kiwi的介绍比较少,加上在测试这块很能很多工程师们并没有特别留意,水平层次可能相差会很远,因此在这一系列的两篇博文中,我将从头开始先简单地介绍一些TDD的概念和思想,然后从XCTest的最简单的例子开始,过渡到Kiwi的测试世界。在下一篇中我将继续深入介绍一些Kiwi的其他稍高一些的特性,以期更多的开发者能够接触并使用Kiwi这个优秀的测试框架。

Link:
http://blog.jobbole.com/60360/

http://oleb.net/blog/2012/08/test-driven-ios-development/