Ich habe ein gemischt-sprachiges Projekt, Objective C und Swift, in XCode 6.
Singleton.h
#import
enum {
enum_A = 0,
enum_B,
enum_C,
enum_D,
enum_E,
enum_F,
enum_G,
} enums;
@interface Singleton : NSObject
+ (id)sharedSingleton;
@end
Singleton.m
// In dieser Datei ist nichts Besonderes
#import "Singleton.h"
static Singleton *shared = nil;
@implementation Singleton
- (id)init {
self = [super init];
if (self) {
}
return self;
}
#pragma mark - Interface
+ (Singleton *)sharedSingleton {
static dispatch_once_t pred;
dispatch_once(&pred, ^{
shared = [[Singleton alloc] init];
});
return shared;
}
@end
ViewController.swift
import UIKit
class ViewController: UIViewController {
let singleton = Singleton.sharedSingleton() as Singleton
override func viewDidLoad() {
super.viewDidLoad()
// Führe nach dem Laden der Ansicht zusätzliche Setup-Arbeiten aus, üblicherweise aus einem Nib.
let n = NSNumber(char: enum_E) // HIER ERSCHEINT DER FEHLER!!!
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Geb den ganzen unnötigen Speicher wieder frei.
}
}
(Natürlich musste ich eine Bridging-Header-Datei einrichten, in der #import "Singleton.h"
hinzugefügt wurde).
Der FEHLER lautet:
Kann 'init' nicht mit einer Argumentliste vom Typ '(char: Int)' aufrufen
Es ist seltsam, dass Swift immer noch enum_E
erkennen kann (ich sehe es blau hervorgehoben), aber trotzdem diesen Fehler anzeigt. Ich habe (char)enum_E
versucht, aber ohne Erfolg.
Hast du irgendwelche Ideen?
Danke,