Я пытаюсь преобразовать этот быстрый код Objective-CПреобразование Swift удобство инициализации с выключателем заявление в 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)
До сих пор, я делаю это:
-(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;
}
}
и имеют уже встречаются следующие ошибки:
for switch(format)
: инструкция требует выражения целочисленного типа (DateFormat * __strong 'недействительна)
и для следующих двух строк: Ожидаемое выражение
Любые идеи?
was DateFormat перечисление в быстром коде? вы изменили его на класс в коде objc, передав в формате 'format' как указатель на экземпляр DateFormat. Компилятор не хочет, чтобы вы включили такой указатель. –
Немного не по теме, но в текущем мире ваш init должен возвращать «instancetype» вместо id. Просто подсказка для компилятора. –