Ich versuche, diesen SWIFT-Code in Objective-CSwift Bequemlichkeit init mit Switch-Anweisung zu Objective-C
convenience init(fromString string: String, format:DateFormat)
{
if string.isEmpty {
self.init()
return
}
let string = string as NSString
switch format {
case .DotNet:
let startIndex = string.rangeOfString("(").location + 1
let endIndex = string.rangeOfString(")").location
let range = NSRange(location: startIndex, length: endIndex-startIndex)
let milliseconds = (string.substringWithRange(range) as NSString).longLongValue
let interval = NSTimeInterval(milliseconds/1000)
self.init(timeIntervalSince1970: interval)
Bisher zu konvertieren, ich tue dies:
-(id) initFromString: (NSString *) string format: (DateFormat *) format{
if (string == nil) {
self = [self init];
return self;
}
switch (format) {
case .DotNet:
NSRange *startIndex = [[string rangeOfString:@"("] location]+1;
}
}
und haben bereits in den folgenden Fehlern führen:
für die switch(format)
: Anweisung erfordert die Expression von integer-Typ (Dateformat * __strong‘ungültig)
und für die 2 folgenden Zeilen: Erwarteter Ausdruck
Irgendwelche Ideen?
war DateFormat eine Enum im Swift-Code? Sie haben es im Objc-Code in eine Klasse umgewandelt und übergeben 'format' als Zeiger auf eine Instanz von DateFormat. Der Compiler möchte nicht, dass Sie einen Zeiger wie diesen einschalten. –
Etwas off-topic, aber in der aktuellen Welt sollte Ihr init "instancetype" anstelle von id zurückgeben. Nur ein praktischer Hinweis für den Compiler. –