Beste mensen,
Ik heb een ontzettend beginners-probleem, heb wel ervaring maar zie iets super-basics over het hoofd. Ik heb een AppController class welke een aparte class gebruikt om een NSArray te vullen met data. Dus:
De header file van AppController:
En de implementatie:
De aparte class file is zeer simpel en bevat de volgende header:
En implementatie file:
Probleem is nu dat ik een fatale fout krijg, waarbij de debugger tijdens runtime aangeeft dat het aanroepen van SpeechList count niet lukt omdat deze niet is gedefinieerd. Echter geeft SpeechList een Array terug waarbij de count functie gewoon zou moeten zitten, het lijk wel of ik dus iets anders terug krijg dan een Array of ik maak een flinke fout in het implementeren van een aparte class. Dit laatste zou mij veel leren, dus als jullie input hebben, graag!
Ik heb een ontzettend beginners-probleem, heb wel ervaring maar zie iets super-basics over het hoofd. Ik heb een AppController class welke een aparte class gebruikt om een NSArray te vullen met data. Dus:
De header file van AppController:
code:
1
2
3
4
5
6
7
8
9
10
11
| #import <Cocoa/Cocoa.h> @interface AppController : NSObject { IBOutlet NSTextField *textField; IBOutlet NSTableView *tableView; NSSpeechSynthesizer *speechSynthesizer; NSArray *Voices; } - (IBAction)startSpeaking:(id)sender; @end |
En de implementatie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
| #import "AppController.h" #import "SpeechList.h" @implementation AppController - (void)awakeFromNib { speechSynthesizer = [[NSSpeechSynthesizer alloc] init]; /* Make the Window object the responder to NSSpeechSynthesizer delegate methods */ [speechSynthesizer setDelegate:self]; Voices = [[SpeechList alloc] init]; } #pragma mark Action methods - (IBAction)startSpeaking:(id)sender { NSString *speechText = [textField stringValue]; [speechSynthesizer setVoice:NULL]; [speechSynthesizer startSpeakingString:speechText]; } #pragma mark Datasource methods - (int)numberOfRowsInTableView:(NSTableView *)tv { return [Voices count]; } - (id)tableView:(NSTableView *)tv objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row { NSString *voice = [Voices objectAtIndex:row]; return voice; } #pragma mark Dealloc -(void)dealloc { [Voices release]; Voices = nil; [super dealloc]; } @end |
De aparte class file is zeer simpel en bevat de volgende header:
code:
1
2
3
4
5
6
7
8
9
| #import <Cocoa/Cocoa.h> @interface SpeechList : NSObject { NSArray *speechList; } @property(readonly, assign) NSArray *speechList; @end |
En implementatie file:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| #import "SpeechList.h" @implementation SpeechList - (id)init { [super init]; speechList = [NSSpeechSynthesizer availableVoices]; return self; } @synthesize speechList; @end |
Probleem is nu dat ik een fatale fout krijg, waarbij de debugger tijdens runtime aangeeft dat het aanroepen van SpeechList count niet lukt omdat deze niet is gedefinieerd. Echter geeft SpeechList een Array terug waarbij de count functie gewoon zou moeten zitten, het lijk wel of ik dus iets anders terug krijg dan een Array of ik maak een flinke fout in het implementeren van een aparte class. Dit laatste zou mij veel leren, dus als jullie input hebben, graag!