Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在Swift中生成较小的url书签?_Ios_Swift_Macos - Fatal编程技术网

Ios 如何在Swift中生成较小的url书签?

Ios 如何在Swift中生成较小的url书签?,ios,swift,macos,Ios,Swift,Macos,我想为本地存储的文件创建书签,以便在文件移动到新位置时可以跟踪这些文件 我尝试使用Swift 3的NSURL函数bookmarkData(选项:includingResourceValuesForKeys:relativeTo)发现它强制生成的书签数据对象的大小几乎是一兆字节,即使文件本身比它小几个数量级 例如,对于4字节的文本文件,以下代码生成410kb的书签数据。 (在AppDelegate的应用程序IDFinishLaunching、OS X、Xcode 8.2中运行) (请注意,当我尝试

我想为本地存储的文件创建书签,以便在文件移动到新位置时可以跟踪这些文件

我尝试使用Swift 3的NSURL函数
bookmarkData(选项:includingResourceValuesForKeys:relativeTo)
发现它强制生成的书签数据对象的大小几乎是一兆字节,即使文件本身比它小几个数量级

例如,对于4字节的文本文件,以下代码生成410kb的书签数据。
(在AppDelegate的
应用程序IDFinishLaunching
、OS X、Xcode 8.2中运行)

(请注意,当我尝试使用
NSURL.BookmarkCreationOptions.minimalBookmark
而不是
.suitableForBookmarkFile
时,输出仅为0kb,我无法使用它跟踪原始文件。)

类似地,为19kb.jpg文件添加书签会生成888kb的书签

我做错什么了吗?如果没有,有没有一种方法可以让书签不那么贪婪

let url = URL(fileURLWithPath: "/Users/U/test.txt", isDirectory: false)

if let urlBookmark = try? url.bookmarkData(options: .suitableForBookmarkFile, includingResourceValuesForKeys: nil, relativeTo: nil) {
    print("bookmark size = \(urlBookmark.count / 1024) kb")
}
编辑

通过进一步的快速测试,我发现书签的大小是固定的,由文件的类别决定,而不是由文件的大小决定:

.第479kb页
.txt 419kb
.pdf 898kb
.数字309kb
.jpg 888kb
.png 915kb
.exe 342kb
.mp4 691kb
.mkv 594kb


不过,我还是想知道,在这些限制条件下,是否有任何方法可以获得更小的书签。

您计算的是书签的大小,而不是文件的大小。书签数据只是表示URL的数据,而不是文件的内容。