我正在尝试使用如下变量的值初始化NSCalendar:
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:jam.calenderType];
但calendar
始终返回nil
我知道:
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierIslamic];
并且:
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
两者都运行正常,但我希望值jam.calenderType
是NSString
,其值为@"NSCalendarIdentifierIslamic"
或@"NSCalendarIdentifierGregorian"
答案 0 :(得分:1)
您的问题来自于将日历标识符存储在变量中的方式。当您编写@"NSCalendarIdentifierIslamic"
时,它只是表示包含该字符的字符串,而不是NSCalendarIdentifierIslamic
标识符指向的字符串。
因此,只需设置变量jam.calenderType = NSCalendarIdentifierIslamic;
或jam.calenderType = NSCalendarIdentifierGregorian;
,它就能正常工作。
另一个简单的解决方案是将您的calenderType
设为BOOL
或int
,然后根据其值选择NSCalendarIdentifierIslamic
或{{ 1}}在您的日历初始化。