gpt4 book ai didi

ios - iCloud NSMetadataQuery 和更新 (NSMetadataQueryUpdateChangedItemsKey)

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

我正在使用推荐的 NSMetaDataQuery 监控我的 iCloud 沙箱 (iOS) - 一切正常。

我正在尝试在 NSMetadataQueryDidUpdateNotification 中使用 NSMetadataQueryUpdateChangedItemsKey 以有效地更新文件系统的内部模型。我面临的挑战是,当文件被移动/重命名时,我如何知道原始文件路径 - 以便我可以更新我的模型?

看起来 NSMetaDataItem 对象是持久的(即当路径改变时更新相同的对象实例)所以我可以使用指针值作为我模型的一种索引。但是 - 我会利用一个明显的实现细节(可能会改变。)也许 NSMetaDataItems 在内存不足时被回收?

任何人都知道这应该如何完成(或者如果 NSMetaDataItem 对象在 NSMetaDataQuery 的生命周期内持续存在,这实际上是这种情况 -并保持“附加”到同一文件系统项目。)

最佳答案

是的,NSMetadataQuery 不提供查询先前路径的方法。

当一个项目被移动时,它在 NSMetadataQuery 结果中的索引保持不变。所以我们可以复制结果的路径,当更新开始时,我们只需要在复制数组的确切位置检查 NSMetadataItem。

    if let updatedObj = obj.userInfo?[NSMetadataQueryUpdateChangedItemsKey] as! [NSMetadataItem]? {

for it in updatedObj {

let url = it.valueForAttribute(NSMetadataItemURLKey) as! NSURL
let value = it.valueForAttribute(NSMetadataUbiquitousItemIsUploadedKey) as! NSNumber

print("Path: " + url.path!)
print("Updated: " + value.stringValue)

let index = metaDataQuery.indexOfResult(it)
let prevPath = duplicatedPathArray[index]

if (prevPath != url.path!) {
print("File Moved. Previous path: " + prevPath)
duplicatePath()
}
}
}

确保每次添加或删除文件时更新数组。

关于ios - iCloud NSMetadataQuery 和更新 (NSMetadataQueryUpdateChangedItemsKey),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32178197/

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