我无权写入 iCloud 文件夹

Posted

技术标签:

【中文标题】我无权写入 iCloud 文件夹【英文标题】:I do not have permission to write into iCloud folder 【发布时间】:2017-12-21 14:01:56 【问题描述】:

我正在尝试将文件写入 ubiquitous 文件夹,我可以运行查询并且一切正常,我看到了文件,但是如果我尝试设置本地文件,我会收到此错误:

Error Domain=NSCocoaErrorDomain Code=513 "“video.mp4” couldn’t be moved because you don’t have permission to access “DemoExample”." UserInfo=NSSourceFilePathErrorKey=/var/containers/Bundle/Application/3C3DC6B5-7B22-4B1C-B8AB-187F640F68AB/DemoExample.app/video.mp4, NSUserStringVariant=(
Move
), NSDestinationFilePath=/private/var/mobile/Library/Mobile Documents/iCloud~com~Test~DemoExample/Documents/video.mp4, NSFilePath=/var/containers/Bundle/Application/3C3DC6B5-7B22-4B1C-B8AB-187F640F68AB/DemoExample.app/video.mp4, NSUnderlyingError=0x17405c5c0 Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"

文件夹中存在Video.mp4,有什么问题?

这是保存文件的代码:

try self.fileManager.setUbiquitous(true, itemAt: URL.init(fileURLWithPath:file.path), destinationURL: iCloudUrl)

我用这个:

<key>NSUbiquitousContainers</key>
<dict>
    <key>iCloud.com.Test.DemoExample</key>
    <dict>
        <key>NSUbiquitousContainerIsDocumentScopePublic</key>
        <true/>
    <key>NSUbiquitousContainerName</key>
    <string>backup</string>
    <key>NSUbiquitousContainerSupportedFolderLevels</key>
    <string>Any</string>
</dict>

【问题讨论】:

您误解了@aeger 的评论(或者他们没有很好地解释)。答案属于答案,而不是问题。您在答案中发布自己的解决方案是正确的。总结:不要在问题中发布答案,也不要在答案中发布问题。问题属于问题,答案属于答案——仅此而已。 :) 【参考方案1】:

请按照以下步骤一一进行。希望它能解决你的问题....

    从 XCode 设置区域下的 Capabilities 启用 iCloud。

    通过启用 iCloud 更新您的 AppID 和配置文件。

    在 info.plist 中添加以下属性。
<key>NSUbiquitousContainers</key>
<dict>
    <key>iCloud.YOUR_BUNDLE_IDENTIFIER</key>
    <dict>
        <key>NSUbiquitousContainerIsDocumentScopePublic</key>
        <true/>
        <key>NSUbiquitousContainerSupportedFolderLevels</key>
        <string>Any</string>
        <key>NSUbiquitousContainerName</key>
        <string>iCloudDriveDemo</string>
    </dict>
</dict>
    iCloud.YOUR_BUNDLE_IDENTIFIER 在这里非常重要。例如,您的包标识符是“com.emraz.myapp”。然后你必须使用“iCloud.com.emraz.myapp”

【讨论】:

【参考方案2】:

这是我的解决方案(@emraz 对我不起作用):

    在所有设备上卸载该应用 删除 Files.app 中的文件夹 (ios)(如果可见)。 删除与 来自 ~/Library/Application 的应用程序 支持/CloudDocs/会话/容器 删除与 来自 ~/Library/Mobile\ Documents/ 的应用程序 几分钟后重启 删除您在 XCode 中使用的方案 重新添加一个新的方案(同名即可)

【讨论】:

以上是关于我无权写入 iCloud 文件夹的主要内容,如果未能解决你的问题,请参考以下文章

将文件复制到我无权访问的网络共享

应用程序无法读取 iCloud 文件

iCloud 和非 UIDocument 文件

禁止您无权访问/在此服务器上[关闭]

无权使用 log4net 从 .NET 应用程序写入 Windows Server 2008 上的磁盘

为啥我无权写入外部存储上的应用程序目录?