我一直在思考为什么我会得到我的结果,但是人们会注意到我是一个初学者 objc 开发者。
忽略我正在尝试做的事情有不同的方法(例如扩展 NSFileManager)这一事实,如果不是太多的业余错误,我会喜欢一些输入。
如果我在返回实例方法 listFilesForURL 期间中断,则返回的 NSArray 对象“theFiles”很好。我得到了我期望的结果,但是在 main.c 中,'listOfFiles' 总是为零。
有人可以指出我没有看到什么吗?非常感谢任何输入!
主程序
#import <Foundation/Foundation.h>
#import "FileManipulator.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
// insert code here...
FileManipulator *myFileManipulator = [[FileManipulator alloc] init];
NSArray *listOfFiles = [myFileManipulator listFilesForURL:[NSURL fileURLWithPath:@"/tmp"]];
}
return 0;
}
文件操纵器.h
#import <Foundation/Foundation.h>
@interface FileManipulator : NSObject
- (id)initAndCopySourceURL:(NSURL *)srcURL toDestination:(NSURL *)destURL;
- (NSArray*)listFilesForURL:(NSURL *)srcURL;
@end
文件操纵器.m
#import "FileManipulator.h"
@implementation FileManipulator
- (id)initAndCopySourceURL:(NSURL *)srcURL toDestination:(NSURL *)destURL {
self = [super init];
if (self != nil) {
NSError *copyError;
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:[srcURL relativePath]]) {
NSLog(@"File exists: %@", [srcURL relativePath], nil);
if ([fileManager copyItemAtURL:srcURL toURL:destURL error:©Error]) {
NSLog(@"File copied successfully to %@", [destURL relativePath]);
} else {
NSLog(@"File not copied, error was: %@", [copyError localizedFailureReason] );
}
}
}
NSLog(@"Init. FileManipulator Class");
return self;
}
- (NSArray *)listFilesForURL:(NSURL *)srcURL {
NSError *listFilesError;
NSLog(@"listFilesForURL Entered");
NSFileManager *myFileManager = [NSFileManager defaultManager];
NSArray *theFiles = [myFileManager contentsOfDirectoryAtPath:[srcURL path] error:&listFilesError];
return theFiles;
}
@end