gpt4 book ai didi

ios - 从 iCloud 下载文件时显示进度百分比?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:37 25 4
gpt4 key购买 nike

我想在从 iCloud 下载 UIDocument 时显示进度条。

我尝试在查询中保持对 NSMetadataItem 的引用,每秒询问它的属性,但键 NSMetadataUbiquitousItemPercentDownloadedKey 要么不存在,要么突然变为下载文档后 100

相关代码:

 // get meta data item from query

NSNumber *downloadProgress = [self.documentMetadataItem valueForAttribute:NSMetadataUbiquitousItemPercentDownloadedKey];
NSLog(@"download status: %@", downloadProgress);

最佳答案

与其轮询 NSMetadataItem 更改,您应该只监听来自 NSMetadataQuery 的更新并获取 NSMetadataUbiquitousItemPercentDownloadedKey 一次(并更新 UI ) 每次收到更新时。

(我认为现有的 NSMetadataItem 对象不会随着下载的进行而更新,除了从下载到完全下载的过渡)。

这是一种使用 KVO 监听 NSMetadataQuery 更新的方法:

// To register for KVO updates:
[query addObserver:self
forKeyPath:@"results"
options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
context:nil];

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
// check that "object" is your metadata query then:
NSUInteger changeKind = [[change objectForKey:NSKeyValueChangeKindKey] unsignedIntegerValue];

switch (changeKind) {
case NSKeyValueChangeSetting:
// The whole array of results changed, update your model accordingly
// ...
break;
case NSKeyValueChangeReplacement:
// This is where you update your progress bar in most cases
// Enumerate [change objectForKey:NSKeyValueChangeNewKey], this is a list of NSMetadataItems that will have all the desired properties
break;
case NSKeyValueChangeInsertion:
// Handle a new document
// ...
break;
case NSKeyValueChangeRemoval:
// Handle a removed document
// ...
break;
}
}

如果您仍然看到进度没有更新,请向 Apple 提交错误。

关于ios - 从 iCloud 下载文件时显示进度百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22506042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com