- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Cocoa/Objective-C 的新手。我正在使用 Xcode 4(并且需要垃圾收集)针对 Mac OS X 10.6 进行编码。
如何让以下代码(基于 Apple 的 sample code )更新我的 GUI,以便 GUI 显示列出的文件计数或文件名本身?我已经知道我不能只创建标签的导出并更新标签的文本。进行 NSLog
调用的位置是我可能想要更新 GUI 中的状态的位置。
我猜测这将涉及将任务放在其他进程/线程上?我已经阅读了一些有关使用 NSTask、多线程和 GCD 进行多处理的文章。除了多线程(我想避免)之外,我真的不知道应该使用哪个。我想我可以把一些东西整合在一起,但更喜欢以最佳或推荐的方式来做(并快速实现)。
我的印象是 NSTask 适合我的简单需求?
我还想为用户提供暂停或取消长时间运行的任务的选项。
提前致谢。
代码:
NSArray *keys = [NSArray arrayWithObjects:
NSURLIsDirectoryKey, NSURLIsPackageKey, NSURLLocalizedNameKey, nil];
NSDirectoryEnumerator *enumerator = [[NSFileManager defaultManager]
enumeratorAtURL:directoryURL
includingPropertiesForKeys:keys
options:(NSDirectoryEnumerationSkipsHiddenFiles)
errorHandler:^(NSURL *url, NSError *error) {
// Handle the error.
// Return YES if the enumeration should continue after the error.
return YES;
}
];
for (NSURL *url in enumerator) {
// Error-checking is omitted for clarity.
NSNumber *isDirectory = nil;
[url getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:NULL];
if ([isDirectory boolValue]) {
NSString *localizedName = nil;
[url getResourceValue:&localizedName forKey:NSURLLocalizedNameKey error:NULL];
NSNumber *isPackage = nil;
[url getResourceValue:&isPackage forKey:NSURLIsPackageKey error:NULL];
if ([isPackage boolValue]) {
NSLog(@"Package at %@", localizedName);
}
else {
NSLog(@"Directory at %@", localizedName);
}
}
else {
NSLog(@"File at %@", url);
}
}
最佳答案
答案是使用 NSOperation,如 NSOperationSample 中所示。 。这涉及到将枚举放入 NSOperation 中,将其放在队列中,并让枚举循环发布 NSNotifications,窗口 Controller 注册以观察这些通知,以便 GUI 可以更新计数器和文件名表(建议的事件架构不太可能实现)以便于在枚举器查找文件时方便地i)。在枚举循环内,它检查 isCancelled 标志以查看用户是否单击了 GUI 中的“停止”按钮,如果是,则退出枚举。
关于objective-c - 如何在使用 Cocoa NSDirectoryEnumerator 列出目录内容时显示文件或进度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6050396/
我有一个 iPhone 应用程序,可以搜索文件夹、整理所有音频文件的数组,然后播放它们。问题是,如果我正在搜索的文件夹中有子文件夹,它只会跳过它/不进入其内容。 我的代码如下: NSArray *p
我使用 NSDirectoryEnmerator 查找所有后缀为 png 和 jpg 的文件,代码如下: NSDirectoryEnumerator *directoryEnumerator = [[
如果我这样做: NSDirectoryEnumerator *directoryEnumerator = [[NSFileManager defaultManager] enumeratorAtURL
我需要避免此枚举中的隐藏文件,但仍在添加 .DS_Store 文件。 我放入 NSLog 进行检查,并在那里得到输出。 可能有一些明显的东西,但我看不到。 NSDirectoryEnumerator
我正在尝试从给定的起始路径对文件系统的结构进行建模。目标是从该路径开始创建文件系统的标准 NSOutlineView。 我有一个名为 fileSystemItem 的模型对象。它具有以下(非常标准的)
迭代目录时调用 fileAttributes 方法的开销有多大? 特别是,我想检查正在枚举的路径是否是目录。使用 fileAttributes 字典还是文件管理器更好? (下面的例子) NSStrin
我试图仅获取顶级目录 NSDirectoryEnumerator *directoryEnumerator = [fileManager enumeratorAtURL:[NSURL URLWithS
下面的代码在 walker = [fileManager enumeratorAtPath:directory]; 处崩溃。代码在第一次调用 refresh 时执行正常,但在第二次(和后续)调用时崩溃
我是 Cocoa/Objective-C 的新手。我正在使用 Xcode 4(并且需要垃圾收集)针对 Mac OS X 10.6 进行编码。 如何让以下代码(基于 Apple 的 sample cod
我正在开发一个项目,我需要递归地迭代给定文件夹的子目录,并基本上获取该文件夹中所有子目录的路径。 CFURLEnumerator 和 NSDirectoryEnumerator 都可以做到这一点,但我
我正在尝试像这样从 NSFileManager 实例化 NSDirectoryEnumerator NSDirectoryEnumerator *enum = [fm enumeratorAtURL:
根据doc , NSDirectoryEnumerator 返回的路径应该相对于枚举的文件夹: An NSDirectoryEnumerator object enumerates the conte
我是一名优秀的程序员,十分优秀!