菜鸟教程小白 发表于 2022-12-13 06:49:46

ios - 无法写入文档目录


                                            <p><p>我正在尝试将 <code>json</code> 文件从应用程序包复制到 <code>Document</code> 目录,但令人惊讶的是我无法做到这一点。代码如下:</p>

<pre><code>NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = ;
NSString *path   = ;

if (![ fileExistsAtPath:path])
   {
   NSString *themesPath = [ pathForResource:@&#34;themes&#34; ofType:@&#34;json&#34;];
   NSError*error      = nil;

    [ copyItemAtPath:themesPath toPath:path error:&amp;error];

   if (error)
      NSLog(@&#34;Error %@&#34;, error);
}
</code></pre>

<p>它会产生以下错误:</p>

<blockquote>
<p>Error Domain=NSCocoaErrorDomain Code=513 &#34;The operation couldn’t be completed. (Cocoa error 513.)&#34; UserInfo=0x194a0e90 {NSSourceFilePathErrorKey=/var/mobile/Applications/ACED3EF9-B0D8-49E8-91DE-37128357E509/Frinder.app/themes.json, NSUserStringVariant=(
      Copy
), NSFilePath=/var/mobile/Applications/ACED3EF9-B0D8-49E8-91DE-37128357E509/Frinder.app/themes.json, NSDestinationFilePath=/var/mobile/Applications/ACED3EF9-B0D8-49E8-91DE-37128357E509/Documents.themes.json, NSUnderlyingError=0x194a0400 &#34;The operation couldn’t be completed. Operation not permitted&#34;}</p>
</blockquote>

<p>经过搜索,我找到了 <a href="https://stackoverflow.com/questions/1132005/iphone-copying-a-file-from-resources-to-documents-gives-an-error" rel="noreferrer noopener nofollow">this question</a>并尝试修改我的代码如下:</p>

<pre><code> if (![ fileExistsAtPath:path])
    {
       NSString *themesPath = [ pathForResource:@&#34;themes&#34; ofType:@&#34;json&#34;];
       NSData   *data       = ;

       BOOL success =[ createFileAtPath:path contents:data attributes:nil];

       if (!success)
          NSLog(@&#34;Fail&#34;);
    }
</code></pre>

<p>但它也不起作用。 <code>success</code> 变量为 <code>NO</code>。我尝试的最后一件事是:</p>

<pre><code>;
</code></pre>

<p>但还是徒劳。它返回 <code>NO</code>。</p>

<p>我需要注意,问题仅出现在设备上。在模拟器上它工作得很好。
谁能给我一个线索?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>第一个例子有一点是正确的:</p>

<pre><code>;
</code></pre>

<p>应该是:</p>

<pre><code>;
</code></pre>

<p>这很清楚我们您阅读了错误消息,您会看到它尝试将文件写入 <code>/var/mobile/Applications/ACED3EF9-B0D8-49E8-91DE-37128357E509/Documents.themes.json</code>。注意有一个 <code>.</code> 应该有一个 <code>/</code>.</p>

<p><code>stringByAppendingPathExtension:</code> 用于为文件添加扩展名,<code>jpg</code>、<code>txt</code>、<code>html</code>、 .....</p>

<p><code>stringByAppendingPathComponent</code> 将文件添加到路径中,通过添加正确的目录分隔符,您的大小写为 <code>/</code>。</p>

<p>您的第二个示例肯定会失败,因为应用程序包是只读的。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 无法写入文档目录,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/22194890/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/22194890/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 无法写入文档目录