• 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 )
Code:
#import <UIKit/UIKit.h>
@interface Quadrat : ViewController{
    IBOutlet UITextField *l;
    IBOutlet UITextField *A;
}
@property (nonatomic, strong)IBOutlet UITextField *l;
@property (nonatomic, strong)IBOutlet UITextField *A;
- (IBAction)doneEditing:(id)sender;
- (IBAction)Lange:(id)sender;
- (IBAction)Flache:(id)sender;
- (IBAction)showMessage:(id)sender;
@end

Code:
#import "Quadrat.h"
#import "LNNumberpad.h"
@implementation Quadrat
@synthesize l,A;

- (void)viewDidLoad {
    [super viewDidLoad];   
    self.l.inputView   = [LNNumberpad defaultLNNumberpad];
    self.A.inputView   = [LNNumberpad defaultLNNumberpad];
}

- (IBAction)Lange:(id)sender {
    NSString *entered1 = A.text;
    NSNumberFormatter *formatter1 = [[NSNumberFormatter alloc] init];
    [formatter1 setDecimalSeparator:@"."];
    [formatter1 setGroupingSeparator:@","];
    NSNumber *number1 = [formatter1 numberFromString:entered1];
    if (number1 == nil )
    {
        [formatter1 setDecimalSeparator:@","];
        [formatter1 setGroupingSeparator:@"."];
        number1 = [formatter1 numberFromString:entered1];
    }   
    float b= [number1 floatValue];
    float a = sqrtf(b);
    l.text =[NSString stringWithFormat:@"%2.8g", a];
}

@end

Es geht hauptsächlich um die IBAction´s .

Gruß Markus
 
Zuletzt bearbeitet:

KALLT

deaktivierter Benutzer
Registriert
12.11.08
Beiträge
1.523
Für schnelle Konvertierungen finde ich diese Website sehr hilfreich (is aber nicht fehlerfrei): http://iswift.org/try. Da ich gerade Swift lerne, habe ich es mal versucht. Ich habe aber gerade keinen Swift2-Compiler zur Hand, möglicherweise muss die Syntax also etwas angepasst werden (dabei ist Xcode aber sehr behilflich). Die letzte Methode ist seit iOS 6 obsolet und für Swift somit nicht verfügbar.

Code:
// Playground - noun: a place where people can play

import UIKit

class Quadrat: UIViewController {

    @IBOutlet private weak var l: UITextField!
    @IBOutlet private weak var A: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        l.inputView = LNNumberpad.defaultLNNumberpad()
        A.inputView = LNNumberpad.defaultLNNumberpad()
    }

    @IBAction private func Lange(sender: AnyObject) {
        let calculatedValue = floatStringFromString(A.text) { sqrtf($0) }
        l.text = calculatedValue
    }

    @IBAction private func Flache(sender: AnyObject) {
        let calculatedValue = floatStringFromString(A.text) { $0 * $0 }
        l.text = calculatedValue
    }

    @IBAction private func showMessage(sender: AnyObject) {
        let message = UIAlertView(title: NSLocalizedString("Hilfe", comment: ""), message: NSLocalizedString("Quadratinfo", comment: ""), delegate: self, cancelButtonTitle: NSLocalizedString("Zurück", comment: ""))
        message.show()
    }

    @IBAction private func doneEditing(sender: AnyObject) {
        sender.resignFirstResponder()
    }

    private func floatStringFromString(value: String, calculation: (Float) -> Float) -> String? {
        let formatter = NSNumberFormatter()
        let separators = [(".", ","), (",", ".")]
        for separator in separators {
            formatter.decimalSeparator = separator.0
            formatter.groupingSeparator = separator.1
            if let number = formatter.numberFromString(value)?.floatValue {
                let calculatedValue = calculation(number)
                return String(format: "%2.8g", calculatedValue)
            }
        }
        return nil
    }

}