Premier prog. en Cocoa

Sabrewolf

Membre enregistré
23 Janvier 2005
7
0
53
Bonjour à tous et toute :)

Je viens de commencer à attaquer le tutoriel de Project:Omega concernant le dévellopement Cocoa.

Je suis arrivé à la partie "Donner du corp à votre éditeur de texte" à la page 9.

Le problème ce que depuis l'édition de ce document, nous retrouvons xcode à la place de Project Builder.
Bon si il n'y avait que le nom qui change ... :))

Il décrive comment déclaré le format de fichier et là ca coince. Je retrouve les targets comme expliqué mais pas d'onglet Applications settings et donc je ne sais pas faire la suite.

Je vous remercie d'avance pour l'aide que vous pourrez m'apporter.
 
Bonjour,
sur ta target, tu fais 'Get Info' et dans l'onglet 'Properties' tu as la liste des types de documents connus par ton application.
 
Je vous remercie, en plus je suis passé par get info et j'ai pas vu. :-/

Mais un autre problème se pose en lisant ce même document.

J'ai créé un Outlet textView comme demandé dans le tutorial, j'ai créé un lien de l'outlet vers NSTextView.

Mais dans le code MyDocument.m, il dit ne pas retrouver textView
- (NSData *)dataRepresentationOfType:(NSString *)aType
{
// Insert code here to write your document from the given data. You can also choose to override -fileWrapperRepresentationOfType: or -writeToFile:ofType: instead.
NSRange range = NSMakeRange(0, [[textView textStorage] length]);
return [textView RTFDFromRange:range];
}

- (BOOL)loadDataRepresentation:(NSData *)data ofType:(NSString *)aType
{
// Insert code here to read your document from the given data. You can also choose to override -loadFileWrapperRepresentation:ofType: or -readFromFile:ofType: instead.
fileData = data;
return fileData != nil;
}

J'ai bien tenté sans être certains de bien comprendre ce que je faisais, de déclaré les deux var. en tant qu'id, mais là la compilation fonctionne mais je ne sais toujours pas sauvé ou lire un fichier.

Dur dur les débuts... un grand merci pour l'aide.
 
Le code actuelle de MyDocument.m

#import "MyDocument.h"

@implementation MyDocument
IBOutlet id textView;
IBOutlet id fileData;

- (id)init
{
self = [super init];
if (self) {

// Add your subclass-specific initialization here.
// If an error occurs here, send a [self release] message and return nil.

}
return self;
}

- (NSString *)windowNibName
{
// Override returning the nib file name of the document
// If you need to use a subclass of NSWindowController or if your document supports multiple NSWindowControllers, you should remove this method and override -makeWindowControllers instead.
return @"MyDocument";
}

- (void)windowControllerDidLoadNib:(NSWindowController *) aController
{
[super windowControllerDidLoadNib:aController];
// Add any code here that needs to be executed once the windowController has loaded the document's window.
}

- (NSData *)dataRepresentationOfType:(NSString *)aType
{
// Insert code here to write your document from the given data. You can also choose to override -fileWrapperRepresentationOfType: or -writeToFile:ofType: instead.
NSRange range = NSMakeRange(0, [[textView textStorage] length]);
return [textView RTFDFromRange:range];
}

- (BOOL)loadDataRepresentation:(NSData *)data ofType:(NSString *)aType
{
// Insert code here to read your document from the given data. You can also choose to override -loadFileWrapperRepresentation:ofType: or -readFromFile:ofType: instead.
fileData = data;
return fileData != nil;
}

@end
 
Dans MyDocument.h, tu dois avoir :
Bloc de code:
#import <Cocoa/Cocoa.h>

@interface MyDocument : NSDocument
{
   IBOutlet id textView;
   IBOutlet id fileData;
}
@end
Tu peux enlever les déclarations que tu as mis dans MyDocument.m.
 
SUPER Genial ca marche :)))) youhouou.

Un grand merci.

Juste pour info, c'est normal que malgré que j'ai créé l'outlet dans interface Builder, je n'ai pas la déclaration automatiquement dans MyDocument.h ?



ntx a dit:
Dans MyDocument.h, tu dois avoir :
Bloc de code:
#import <Cocoa/Cocoa.h>

@interface MyDocument : NSDocument
{
   IBOutlet id textView;
   IBOutlet id fileData;
}
@end
Tu peux enlever les déclarations que tu as mis dans MyDocument.m.
 
Je me suis un peu précipiter :-/

Il sauve bien le document, mais quand je l'ouvre, le document est vide.

Quand j'ouvre le fichier sauver, dans textedit le fichier contient:
rtfd
 
Sabrewolf a dit:
Juste pour info, c'est normal que malgré que j'ai créé l'outlet dans interface Builder, je n'ai pas la déclaration automatiquement dans MyDocument.h ?
Dans Interface Builder, voir le menu "Classes" et l'item "Create files for <nom de ta classe>"
 
Ta variable textView est de quel type : NSText ou NSTextView ?
La fonction '- (NSData *)RTFDFromRange: (NSRange)aRange' appartient à la classe NSText.
 
J'ai été vérifié le type, il était de type id et je l'ai passé en type NSText. Mais ca ne change rien!



ntx a dit:
Ta variable textView est de quel type : NSText ou NSTextView ?
La fonction '- (NSData *)RTFDFromRange: (NSRange)aRange' appartient à la classe NSText.