2016-06-09 5 views
0

Ошибок возникают в этом методе:«Использование неразрешенного идентификатора» ошибка, но я идентификатор, объявленный в рамках

func stringFromProduct(product: SPTProduct) -> String { 
    switch product { 
    case SPTProductFree: 
     return "Free" 
    case SPTProductPremium: 
     return "Premium" 
    case SPTProductUnlimited: 
     return "Unlimited" 
    default: 
     return "Unknown" 
    } 
} 

Они появляются на SPTProductFree, SPTProductPremium и SPTProductUnlimited.

Тем не менее, в файле заголовка рамки я использую, это декларируется:

typedef NS_ENUM(NSUInteger, SPTProduct) { 
    SPTProductFree, 
    SPTProductUnlimited, 
    SPTProductPremium, 
    SPTProductUnknown 
}; 

Мой файл шунтирующий настроен правильно, но он все еще говорит, что это нерешенный идентификатор.

Спасибо!

ответ

1

От Interacting with C APIs в «Использование Swift с какао и Objective-C» ссылка:

Swift импортирует любой C перечисление с пометкой NS_ENUM макро как Swift перечисления с Int сырого типа значения. Префиксы имен имен перечисления C удаляются, когда они импортируются в Swift, независимо от того, определены они в системных рамках или в пользовательском коде.

Таким образом, ваш Objective-C перечисление импортируется Swift в

public enum SPTProduct : UInt { 
    case Free 
    case Unlimited 
    case Premium 
    case Unknown 
} 

, и вы можете видеть, что с помощью «сгенерированного интерфейса» пункт меню на файле заголовка Objective-C, содержащий определение.

Следовательно, вы используете его от Swift, как

func stringFromProduct(product: SPTProduct) -> String { 
    switch product { 
    case .Free: 
     return "Free" 
    case .Premium: 
     return "Premium" 
    case .Unlimited: 
     return "Unlimited" 
    default: 
     return "Unknown" 
    } 
}