iOS-Praktikum Blatt 1 Aufgabe 2 a Aufgabe Legen Sie ein Objective-C-Projekt an. Legen Sie die Objective-C-Klassen für Personen und Studenten an. Schreiben Sie nun eine Swift-Klasse, die eine Notenliste von Studenten verwaltet. Schreiben Sie dann eine Main- Methode in ObjectiveC, in der die Notenliste mit Inhalt befüllt und abgefragt wird. Person & Student @interface Person : NSObject -(id) initWithName:(NSString *)name profession:(NSString *)profession age: (NSInteger)age height:(NSNumber *)height; // readwrite default wert, darum rauslassen @property (nonatomic) NSString *name; @property (nonatomic) NSString *profession; @property (nonatomic) NSInteger age; @property (nonatomic) NSNumber *height; ———————————————————————————————————————————— @interface Student : Person -(id)initWithStudentName:(NSString *)name age:(NSInteger)age height:(NSNumber *)height matriculationNumber: (NSInteger)matriculationNumber major:(NSString *)major; @property(nonatomic, assign) NSInteger matriculationNumber; @property(nonatomic, strong) NSString *major; ———————————————————————————————————————————————————————— @implementation Student const NSString *STUDENT_PROFESSION = @"Student"; @implementation Person -(id)initWithName:(NSString *)name profession:(NSString *)profession age: (NSInteger)age height:(NSNumber *)height { self = [super init]; if (self) { _name = name; _profession = profession; _age = age; _height = height; } } return self; -(id)initWithStudentName:(NSString *)name age:(NSInteger)age height:(NSNumber *)height matriculationNumber: (NSInteger)matriculationNumber major:(NSString *)major { self = [super initWithName:name profession:STUDENT_PROFESSION age:age height:height]; if(self){ } } _major = major; _matriculationNumber = matriculationNumber; return self; Report.swift // Klasse muss mit @objc annotiert sein und muss NSObject erben sonst würden die ObjC Klassen diese Swift-Klasse nicht erkennen @objc class Report: NSObject { private(set) var overview: [Int: Float] = [:]; // ‚for': externer variablen name, 'student': interner variablen name func add(grade: Float, for student: Student) { overview[student.matriculationNumber] = grade } } Bridging-Header • Student wird durch den Header in der Swift-Klasse erkannt #import "Student.h" Build Settings > Package • Defines Module = YES • Product Module Name = [NameDesSwiftModules] Main #import <Foundation/Foundation.h> #import "Student.h" // importiert das Swift module, dass separat gebaut wird und die swift klasse enthält // dazu bei Built Settings im Packaging defines Modules auf YES setzen und einen Namen bei Product Module Name eingeben // Suffix ‚-Swift.h‘ wird von ObjC vorgegeben #import "StudentDemoObjC-Swift.h" int main(int argc, const char * argv[]) {
© Copyright 2024 ExpyDoc