• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

[Swift] Projekt von Objective-C in Swift umwandeln

Markussm

Granny Smith
Registriert
20.12.14
Beiträge
14
Hallo
Könnt ihr mir beim Umwandeln von einem kleinen privaten Projekt helfen?

Hier ist die Header Datei ( Objective -C )
eins, zewi, drei, vier sind Strings die ihre Daten von einem anderen View Controller bekommen.
@property (strong, nonatomic) IBOutlet UISwitch *bluetoothSwitch;

- (void)viewDidLoad
{
[super viewDidLoad];

NSString *SwitchState;
NSArray *myStrings = [[NSArray alloc] initWithObjects:eins,zwei,drei, vier, nil];
SwitchState = [myStrings componentsJoinedByString:mad:" | | "];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:mad:"store.plist"];

NSFileManager *fileManager = [NSFileManager defaultManager];

if (![fileManager fileExistsAtPath: path]) {
path = [documentsDirectory stringByAppendingPathComponent: [NSString stringWithFormat:mad:"store.plist"] ];
}

NSMutableDictionary *savedValue = [[NSMutableDictionary alloc] initWithContentsOfFile: path];
if ([[savedValue objectForKey:SwitchState] boolValue]){
self.bluetoothSwitch.on = [[savedValue objectForKey:SwitchState] boolValue];
}
else{
}
}

Ich habe den Code schon teilweise in Swift umgewandelt, bekomme aber folgende Fehler:
Cannot subscript a value of type 'Dictionary<NSObject, AnyObject>' with an index of type 'String'
bei " if (savedValue?[SwitchState] as? NSNumber)?.boolValue ?? false { "
Hier mein Swift Code
var eins = "Test"
var zwei = "Text"
var drei = "Test"
var vier = "Text"
var SwitchState = ""
let myStrings = [eins, zwei, drei, vier]
SwitchState = myStrings.joined(separator: " | | ")
let paths = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true)
let documentsDirectory = paths[0]
var path = URL(fileURLWithPath: documentsDirectory).appendingPathComponent("store.plist").absoluteString

let fileManager = FileManager.default

if !fileManager.fileExists(atPath: path) {
path = URL(fileURLWithPath: documentsDirectory).appendingPathComponent("store.plist").absoluteString
}

var savedValue = NSDictionary(contentsOfFile: path) as Dictionary?
print("Das bekommt viewdid: \(SwitchState)")
if (savedValue?[SwitchState] as? NSNumber)?.boolValue ?? false {
bluetoothSwitch.isOn = (savedValue?[SwitchState] as? NSNumber)?.boolValue ?? false
} else {
print("nein")
}
Gruß Markus
 

Dx667

Stina Lohmann
Registriert
26.11.17
Beiträge
1.037
Umwandeln ist wohl der falsche Begriff...
Wenn es ein kleines Projekt ist dann schreibe es einfach in Swift neu.
Die grundlegende Logik hast du ja.

Und bitte arbeite an deinem coding Stil...