samedi 17 mars 2012

La chose drôle au sujet Ancien code ...

La chose drôle au sujet de l'ancien code et le code de la plupart des nouvelles, c'est qu'il ya souvent place à amélioration. Peu de temps après la publication NSString appendToFile: usingEncoding:, J'ai réalisé que j'aurais pu tuer deux oiseaux avec une pierre en ajoutant une méthode catégorie sur NSData puis en appelant cette méthode à partir de la méthode la catégorie NSString. De cette façon je obtenir la fonctionnalité des deux classes sans répéter la logique.

Sans plus tarder:

#import <Foundation/Foundation.h>

@interface NSData(MCFileAppend)
- (BOOL)appendToFile:(NSString *)path;
@end

@implementation NSData(MCFileAppend)
- (BOOL)appendToFile:(NSString *)path
{
NSFileHandle *fh = [NSFileHandle fileHandleForWritingAtPath:path];
if (fh == nil)
return [self writeToFile:path atomically:YES];

[fh truncateFileAtOffset:[fh seekToEndOfFile]];

[fh writeData:self];
[fh closeFile];
return YES;
}

@end

#pragma mark -
@interface NSString(MCFileAppend)
- (BOOL)appendToFile:(NSString *)path usingEncoding:(NSStringEncoding)encoding;
@end

@implementation NSString(MCFileAppend)
- (BOOL)appendToFile:(NSString *)path usingEncoding:(NSStringEncoding)encoding
{
NSData *encoded = [self dataUsingEncoding:encoding];
return [encoded appendToFile:path];
}

@end


Aucun commentaire: