Hallo alle zusammen 
So nun möchte ich mich auch ein wenig an der iOS-Programmierung veruschen. Allerdings ist das ganze nicht ganz freiwillig sondern vom Studium aus.
Da ich ein ganzer Neuling bin habe ich leider ein paar kleinere und größere Probleme.
Aber kurz mal zu unserer Anwendung die wir in der Vorlesung schreiben.
Im Moment ist es eine kleine toDo Liste in dieser ein paar Tasks gelistet sind (im Moment hart Gecodet)
sprich : Task 1 Task 2 ..... usw. wenn man auf einen Task drückt, kommt man auf den nächsten View und kann dort in einem Textfield den Namen dieser Task ändern.
So.... nun soll das ganze um eine Filter Methode erweitert werden. Hier dazu die Aufgabe:
Aufgabe 1a:
Erweitern Sie die bestehende List-Klasse um eine Filter-Funktion:
- (NSArray *)filterTasks:(BOOL (^)(Task *task)filter;
Die Methode soll eine Liste der gefilterten Tasks zurückliefern.
Die Art der Filterung überlasse ich Ihnen.
Das habe ich wie folgt umgesetzt.
list.h
Alles anzeigen
Alles anzeigen
Aufgabe 1b:
Erweitern Sie die Klasse NSArray um eine allgemeine Filter-Funktion, die auf alle Arrays angewendet werden kann:
- (NSArray *)filter:(BOOL (^)(id object))filterBlock;
Alles anzeigen
Aufgabe 1c:
Verwenden Sie die Filter-Methode aus 1b in 1a.
Nun wenn ich die Filter Methode in List.m verwende passiert nichts.
wäre wirklich dankbar, wenn mir da jemand unter die Arme greifen könnte.
Liebe Grüße

So nun möchte ich mich auch ein wenig an der iOS-Programmierung veruschen. Allerdings ist das ganze nicht ganz freiwillig sondern vom Studium aus.
Da ich ein ganzer Neuling bin habe ich leider ein paar kleinere und größere Probleme.
Aber kurz mal zu unserer Anwendung die wir in der Vorlesung schreiben.
Im Moment ist es eine kleine toDo Liste in dieser ein paar Tasks gelistet sind (im Moment hart Gecodet)
sprich : Task 1 Task 2 ..... usw. wenn man auf einen Task drückt, kommt man auf den nächsten View und kann dort in einem Textfield den Namen dieser Task ändern.
So.... nun soll das ganze um eine Filter Methode erweitert werden. Hier dazu die Aufgabe:
Aufgabe 1a:
Erweitern Sie die bestehende List-Klasse um eine Filter-Funktion:
- (NSArray *)filterTasks:(BOOL (^)(Task *task)filter;
Die Methode soll eine Liste der gefilterten Tasks zurückliefern.
Die Art der Filterung überlasse ich Ihnen.
Das habe ich wie folgt umgesetzt.
list.h
Quellcode
- #import <Foundation/Foundation.h>
- #import "Task.h"
- #import "NSArray_Filter.h"
- @interface List : NSObject
- @property (nonatomic, strong) NSString *title;
- @property (nonatomic, strong) NSDate *deadline;
- @property (nonatomic, strong) NSArray *tasks;
- - (void)addTask:(Task *)task;
- - (void)diplayTasks;
- - (NSInteger)numberOfTasks;
- - (NSArray *)filterTasks:(BOOL (^)(Task *task))filter;
- @end
Quellcode
- [b]List.m[/b]
- #import "List.h"
- @interface List ()
- @end
- @implementation List
- - (void)addTask:(Task *)task {
- NSMutableArray *newTasks = [[NSMutableArray alloc] initWithArray:self.tasks];
- if (task) {
- [newTasks addObject:task];
- }
- self.tasks = [NSArray arrayWithArray:newTasks];
- }
- - (void)diplayTasks {
- for (int i = 0; i < self.tasks.count; i++) {
- Task *task = self.tasks[i];
- NSLog(@"Task: %@", task.title);
- self.tasks = [self.tasks filter:^BOOL(Task *task) {
- return [task.title hasPrefix:@"Task"];
- }];
- }
- }
- - (NSInteger)numberOfTasks {
- return [self.tasks count];
- }
- //hier ist Aufgabe 1
- [b]- (NSArray *)filterTasks:(BOOL (^)(Task *task))filter {
- NSMutableArray *result = [self.tasks mutableCopy];
- for (Task *task in self.tasks) {
- BOOL res = filter(task);
- if (res)
- [result addObject:result];
- }
- return result;
- }[/b]
- @end
Aufgabe 1b:
Erweitern Sie die Klasse NSArray um eine allgemeine Filter-Funktion, die auf alle Arrays angewendet werden kann:
- (NSArray *)filter:(BOOL (^)(id object))filterBlock;
Quellcode
Aufgabe 1c:
Verwenden Sie die Filter-Methode aus 1b in 1a.
Nun wenn ich die Filter Methode in List.m verwende passiert nichts.
wäre wirklich dankbar, wenn mir da jemand unter die Arme greifen könnte.
Liebe Grüße