Pour mon application, j'ai besoin d'utiliser l'API du gestionnaire de fichiers Carbon pour obtenir la taille d'un dossier (NSEnumerator est lent, et l'utilisation de NSTask avec une commande shell est encore pire). J'ai importé le cadre de carbone, et j'utilise cette méthode pour obtenir la taille d'un dossier:La conversion NSString vers FSRef ne fonctionne pas
http://www.cocoabuilder.com/archive/message/cocoa/2005/5/20/136503
Il utilise un FSRef comme argument, et ma chaîne de chemin est actuellement NSString. J'ai essayé d'utiliser pour convertir le NSString à un FSRef:
FSRef f;
OSStatus os_status = FSPathMakeRef((const UInt8 *)[filePath fileSystemRepresentation], &f, NULL);
if (os_status != noErr) {
NSLog(@"fsref creation failed");
}
Et puis j'ai appelé la méthode de la taille du dossier:
[self fastFolderSizeAtFSRef:f];
Cependant lorsque je tente de construire, je reçois cette erreur en ce qui concerne la ligne ci-dessus :
erreur: type incompatible pour l'un des arguments 'fastFolderSizeAtFSRef:'
Toute aide serait appréciée. Merci
Salut Dave, Merci pour cette méthode. Je l'ai mis dans ma classe et j'ai ensuite essayé ceci: [self fastFolderSizeAtFSRef: [self convertNSStringToFSRef: filePath]]; Où filePath est mon NSString contenant le chemin. Et je reçois un "avertissement 'AppController" peut ne pas répondre à' -convertNSStringToFSRef '". J'ai le sentiment que j'appelle votre méthode dans le mauvais sens ... Merci – indragie
Oui, je l'ai écrit comme une fonction C. Si vous le voulez comme méthode, changez la première ligne en '- (FSRef) convertNSStringToFSRef: (NSString *) theString {'. Alors n'oublie pas cette esperluette! Cette méthode retourne un FSRef, et comme j'ai déjà répondu ci-dessus, la méthode fastFolderSize veut un pointeur FSRef. Je suis en train d'éditer ma réponse avec un peu plus d'informations ... –
Merci Dave, puis-je avoir la permission d'utiliser ces 2 méthodes dans mon application? Ceux dans NSFileManager + FileSize.m? P.S. Mon application est freeware (et éventuellement Open source) :) – indragie