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:
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:
Enregistrer un commentaire