のスイフト2インポートのバグと思われる:ここ
init?(calendarIdentifier ident: String)
は、第二のinitメソッドでありますObjective-Cインタフェース。 Objective-Cで がある - インスタンスメソッド
- (id)initWithCalendarIdentifier:(NSString *)string
// Initializes a newly-allocated NSCalendar object for the calendar specified by a given identifier.
およびクラス(ファクトリメソッド)の両方 - それは基礎クラスで通常である時:(
+ (NSCalendar *)calendarWithIdentifier:(NSString *)calendarIdentifierConstant
// Creates and returns a new NSCalendar object specified by a given identifier.
と次の2つのステートメントでありますほとんど)同等:スウィフトで
NSCalendar *cal = [[NSCalendar alloc] initWithIdentifier:@"..."];
NSCalendar *cal = [NSCalendar calendarWithIdentifier:@"..."];
のみイニシャライザあり、そして両方が同じに にマッピングされなければなりませんスウィフト初期化子(他のFoundation クラスの場合のように)。どうやらそれは正しく動作しませんが、結果 は同じです:で
let cal1 = NSCalendar(calendarIdentifier: NSCalendarIdentifierChinese)
let cal2 = NSCalendar(identifier: NSCalendarIdentifierChinese)
print(cal1 == cal2) // true
スウィフト3唯一の初期化子はNSCalendar.Identifier
パラメータを取って、そこにある:
let cal = NSCalendar(identifier: .chinese)
(または新しい値タイプ
let cal = Calendar(identifier: .chinese)
(列挙パラメータを使用)。
@LeoDabus開発者が失敗しないenumバージョンの代わりに文字列バージョンを使用する理由はありますか? –