使用变量 属性 值作为 NSCalendarIdentifier return nil

Using a variable property value for NSCalendarIdentifier return nil

我正在尝试使用如下可变值初始化 NSCalendar:

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:jam.calenderType];

但是calendar总是returnsnil

我知道:

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierIslamic];

并且:

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

两者都工作正常,但我希望值是 jam.calenderType,这是一个 NSString,其值为 @"NSCalendarIdentifierIslamic"@"NSCalendarIdentifierGregorian"

您的问题来自您在变量中存储日历标识符的方式。当您写 @"NSCalendarIdentifierIslamic" 时,它只是表示包含这些字符的字符串,而不是 NSCalendarIdentifierIslamic 标识符指向的字符串。

因此只需设置您的变量 jam.calenderType = NSCalendarIdentifierIslamic;jam.calenderType = NSCalendarIdentifierGregorian; 即可正常工作。

另一个简单的解决方案是将您的 calenderType 设为 BOOLint,然后根据它的值选择 NSCalendarIdentifierIslamicNSCalendarIdentifierGregorian 在你的日历初始化中。