NSLocale NSLocaleCalendar 导致 EXC_BAD_ACCESS
NSLocale NSLocaleCalendar causes EXC_BAD_ACCESS
如果 link 没有跳转到页面的正确部分,则查找 localeIdentifierFromComponents(_:)
。
XCode 7.2游乐场
print(NSLocale.localeIdentifierFromComponents([
NSLocaleLanguageCode:"en",
NSLocaleCountryCode:"US",
NSLocaleCalendar: NSJapaneseCalendar
]))
//EXC_BAD_ACCESS
而
print(NSLocale.localeIdentifierFromComponents([
NSLocaleLanguageCode:"en",
NSLocaleCountryCode:"US",
]))
//"en_US"
如果我用逆运算
print(NSLocale.componentsFromLocaleIdentifier("en_US@calendar=japanese"))
//["kCFLocaleCountryCodeKey": "US", "kCFLocaleLanguageCodeKey": "en", "calendar": "japanese"]
NSLocaleCalendar 映射到 kCFLocaleCalendarKey,而不是 "calendar"
我是做错了什么还是文档有误?
我会说文档是错误的(您使用的是他们使用的确切示例),或者更可能的是,它是 Foundation 中的一个实际错误(Xcode 7.2.1,Swift 2) 至少 Swift 访问它 - 这并不能确认 Objective-C 访问有效或无效(尽管我猜他们是一样的)。
我建议提交 bug report.
这是我的游乐场来确认你的错误。即使使用公历,它也在爆炸式增长。
//: Playground - noun: a place where people can play
import Foundation
let ident = NSLocale.localeIdentifierFromComponents([
NSLocaleLanguageCode:"en",
NSLocaleCountryCode:"US",
])
NSGregorianCalendar
NSJapaneseCalendar
NSLocale.componentsFromLocaleIdentifier("en_US")
NSLocale.componentsFromLocaleIdentifier("en_US@calendar=japanese")
let ident2 = NSLocale.localeIdentifierFromComponents([
NSLocaleLanguageCode:"en",
NSLocaleCountryCode:"US",
NSLocaleCalendar:NSGregorianCalendar // causing EXC_BAD_ACCESS
])
如果 link 没有跳转到页面的正确部分,则查找 localeIdentifierFromComponents(_:)
。
XCode 7.2游乐场
print(NSLocale.localeIdentifierFromComponents([
NSLocaleLanguageCode:"en",
NSLocaleCountryCode:"US",
NSLocaleCalendar: NSJapaneseCalendar
]))
//EXC_BAD_ACCESS
而
print(NSLocale.localeIdentifierFromComponents([
NSLocaleLanguageCode:"en",
NSLocaleCountryCode:"US",
]))
//"en_US"
如果我用逆运算
print(NSLocale.componentsFromLocaleIdentifier("en_US@calendar=japanese"))
//["kCFLocaleCountryCodeKey": "US", "kCFLocaleLanguageCodeKey": "en", "calendar": "japanese"]
NSLocaleCalendar 映射到 kCFLocaleCalendarKey,而不是 "calendar"
我是做错了什么还是文档有误?
我会说文档是错误的(您使用的是他们使用的确切示例),或者更可能的是,它是 Foundation 中的一个实际错误(Xcode 7.2.1,Swift 2) 至少 Swift 访问它 - 这并不能确认 Objective-C 访问有效或无效(尽管我猜他们是一样的)。
我建议提交 bug report.
这是我的游乐场来确认你的错误。即使使用公历,它也在爆炸式增长。
//: Playground - noun: a place where people can play
import Foundation
let ident = NSLocale.localeIdentifierFromComponents([
NSLocaleLanguageCode:"en",
NSLocaleCountryCode:"US",
])
NSGregorianCalendar
NSJapaneseCalendar
NSLocale.componentsFromLocaleIdentifier("en_US")
NSLocale.componentsFromLocaleIdentifier("en_US@calendar=japanese")
let ident2 = NSLocale.localeIdentifierFromComponents([
NSLocaleLanguageCode:"en",
NSLocaleCountryCode:"US",
NSLocaleCalendar:NSGregorianCalendar // causing EXC_BAD_ACCESS
])