0
Ben Objective-C için bu hızlı enum dönüştüren bir sorun yaşıyorum: 'Bir Swift enum nasıl dönüştürülür: String bir Objective-C enum'a dönüştürülür: NSString?
Değil mi:
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)
}
Zaten her yerde bu araştırılmış ve bu ve bunu buldum Bu cevapları tam olarak anlayabiliyorum. Daha zarif çözümler (varsa) veya bu cevapların modern objektif-c sözdizimi ile daha iyi açıklanmasını bekliyorum.
Teşekkür ederiz!
Gerçekten enumun amacını anlamıyorum. Bir enum'un çok garip bir kullanımı. – Sulthan
Görünmüyor ki * bu bana bir tuhaflık kullanması (Apple'ın [bir enum ile barkodu temsil ettiği] [https://developer.apple.com/library/ios/documentation/Swift/Conceptual/] Swift_Programming_Language/Enumerations.html # // apple_ref/doc/uid/TP40014097-CH12-ID148)!). Onu Objective-C'ye dönüştürmek için herhangi bir "zarif çözüm" olmayacak. C'de enumlar, sadece Swift'in aksine * yolların * daha güçlü oldukları - sadece yüceltilmiş tamsayılardır. Enumunuzun bir tamsayı değerini bir dizeye dönüştürmek için enumuzu ek mantık içinde sarmanız gerekir. – Hamish
Neden kendimi yaptığım konusunda kafam çok karışık olmasına rağmen ben = ISO8601Format (rawValue: ISO8601Format.Year.rawValue)! '.... neden sadece" self = .Year "? – Hamish