0
我有一个问题,这个迅速枚举转换成Objective-C的:如何将Swift enum:String转换为Objective-C枚举:NSString?
public enum ISO8601Format: String {
case Year = "yyyy" // 1997
case YearMonth = "yyyy-MM" // 1997-07
case Date = "yyyy-MM-dd" // 1997-07-16
case DateTime = "yyyy-MM-dd'T'HH:mmZ" // 1997-07-16T19:20+01:00
case DateTimeSec = "yyyy-MM-dd'T'HH:mm:ssZ" // 1997-07-16T19:20:30+01:00
case DateTimeMilliSec = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" // 1997-07-16T19:20:30.45+01:00
init(dateString:String) {
switch dateString.characters.count {
case 4:
self = ISO8601Format(rawValue: ISO8601Format.Year.rawValue)!
case 7:
self = ISO8601Format(rawValue: ISO8601Format.YearMonth.rawValue)!
case 10:
self = ISO8601Format(rawValue: ISO8601Format.Date.rawValue)!
case 22:
self = ISO8601Format(rawValue: ISO8601Format.DateTime.rawValue)!
case 25:
self = ISO8601Format(rawValue: ISO8601Format.DateTimeSec.rawValue)!
default:// 28:
self = ISO8601Format(rawValue: ISO8601Format.DateTimeMilliSec.rawValue)!
}
}
}
public enum DateFormat {
case ISO8601(ISO8601Format?), DotNet, RSS, AltRSS, Custom(String)
}
我已经无处不在研究这一点,并发现这一点,这一点:
没”我非常理解这些答案。我正在寻找更现代的Objective-C语法的更优雅的解决方案(如果有的话)或更好地解释这些答案。
谢谢!
我真的不明白枚举的目的。这是一个非常奇怪的使用枚举。 – Sulthan
似乎并不奇怪*使用枚举给我(看苹果已经显示[用enum代表条形码](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/) Swift_Programming_Language/Enumerations.html#// apple_ref/DOC/UID/TP40014097-CH12-ID148)!)。没有任何“优雅的解决方案”将其转换为Objective-C。在C语言中,枚举只是荣耀的整数 - 不像在Swift中他们更强大。您必须将enum包含在额外的逻辑中才能将枚举的整数值转换为字符串,以作为链接显示的问题的答案。 – Hamish
虽然我很困惑,为什么你要做self = ISO8601Format(rawValue:ISO8601Format.Year.rawValue)!'....为什么不只是'self = .Year'? – Hamish