我使用NSFileManager获取当前设备磁盘空间(总数,使用数和空闲数),如此...
let systemAttributes = try? NSFileManager.defaultManager().attributesOfFileSystemForPath(NSHomeDirectory() as String)
let space = (systemAttributes?[NSFileSystemSize] as? NSNumber)?.longLongValue
有没有办法为用户的iCloud帐户做类似的事情?我希望能够在应用程序中显示用户的iCloud磁盘空间统计信息。
答案 0 :(得分:1)
iCloud在线容量由Apple决定。本地缓存大小由磁盘上的限制设置。我之前的回答是磁盘容量。您的样本应该返回您自己设备的大小。
以下答案已经过修订,可帮助您确定iCloud容器路径的文件大小。还有其他方法,如枚举子路径,可能是你想要的。我提出了下面应该工作的最简单的事情 works (我还没有测试过)。如果您正在寻找不同的东西,请告诉我。
根据Apple docs和Xcode中的快速帮助,您似乎可能需要查看URLForUbiquityContainerIdentifier
返回与指定关联的iCloud容器的URL 标识符并建立对该容器的访问权限。指向的URL 指定的普遍容器,如果容器不能,则为零 找到或者如果iCloud存储对当前用户不可用或者 设备
关于使用此属性的重要说明:
鉴于这些信息,这样的事情可能有用......请务必查看文档,快速帮助和标题文件,以了解任何其他警告。
dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0), { () -> Void in
//Note: The container identifier is in your Capabilities > iCloud > Containers
if let iCloudPath = NSFileManager.defaultManager().URLForUbiquityContainerIdentifier("iCloud.com.yourcompanydomain.app")?.path {
let pathAttributes = try? NSFileManager.defaultManager().attributesOfItemAtPath(iCloudPath)
let space = (pathAttributes?[NSFileSize] as? NSNumber)?.unsignedLongLongValue
dispatch_async(dispatch_get_main_queue()) {
print ("iCloud disk space: \(space)")
}
}
})