对于我的应用程序,我需要使用Carbon文件管理器API来获取文件夹的大小(NSEnumerator速度慢,并且使用带有shell命令的NSTask更糟糕)。我已经导入了碳框架,我使用这个方法来得到一个文件夹的大小:NSString到FSRef转换不起作用
http://www.cocoabuilder.com/archive/message/cocoa/2005/5/20/136503
它采用FSRef作为参数,和我的路径字符串是当前一个NSString。我试图以此来为的NSString转换为FSRef:
FSRef f;
OSStatus os_status = FSPathMakeRef((const UInt8 *)[filePath fileSystemRepresentation], &f, NULL);
if (os_status != noErr) {
NSLog(@"fsref creation failed");
}
然后我打电话给文件夹大小的方法:
[self fastFolderSizeAtFSRef:f];
然而,当我尝试建立,我得到关于上述行此错误:
错误:不兼容的类型参数的一个 'fastFolderSizeAtFSRef:'
任何帮助,将不胜感激。谢谢
嗨戴夫, 感谢您的方法。我把它放在我的课堂上,然后试试这个: [self fastFolderSizeAtFSRef:[self convertNSStringToFSRef:filePath]]; 其中filePath是包含路径的我的NSString。我得到一个“警告”AppController'可能不会响应'-convertNSStringToFSRef'“。我有一种感觉,我打电话给你的方法是错误的... 谢谢 – indragie 2009-08-15 01:07:57
是的,我把它写成C函数。如果您希望将其作为方法,请将第一行更改为' - (FSRef)convertNSStringToFSRef:(NSString *)theString {'。那么请不要忘记&符号!这个方法返回一个FSRef,就像我上面回答的那样,fastFolderSize方法需要一个FSRef指针。我正在编辑我的答案,提供更多信息... – 2009-08-15 01:22:51
感谢戴夫,我可以在我的应用程序中使用这两种方法吗?那些在NSFileManager + FileSize.m? P.S.我的应用程序是免费的(也可能是开源的):) – indragie 2009-08-15 01:39:39