2016-06-09 8 views
0

Die Fehler in dieser Methode kommen erklärt:„Verwendung von ungelösten Kennung“ Fehler, aber ich habe die Kennung in einem Rahmen

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

Sie zeigen sich bei SPTProductFree, SPTProductPremium und SPTProductUnlimited.

Doch in einer Header-Datei eines Rahmens ich verwende, ist dies erklärt:

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

Meine Bridging-Datei korrekt eingerichtet ist, aber es sagt, es immer noch ein ungelöstes Kennung ist.

Dank!

Antwort

1

Von Interacting with C APIs in dem "Verwendung von Swift mit Cocoa und Objective-C" Referenz:

Swift importiert jede C-Enumeration mit dem Makro NS_ENUM markiert als Swift Aufzählung mit einem Int Rohwert Typ. Die Präfixe für C-Enumerations-Fallnamen werden beim Importieren in Swift entfernt, unabhängig davon, ob sie in System-Frameworks oder in benutzerdefiniertem Code definiert sind.

So Ihre Objective-C Aufzählung ist als

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

zu Swift importiert und Sie können sehen, dass durch die "generiert Interface" Menüpunkt auf der Objective-C-Header-Datei enthält die Definition verwenden.

Folglich verwenden Sie es von Swift als

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