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:@"themes" ofType:@"json"];
NSError*error = nil;
[ copyItemAtPath:themesPath toPath:path error:&error];
if (error)
NSLog(@"Error %@", error);
}
</code></pre>
<p>它会产生以下错误:</p>
<blockquote>
<p>Error Domain=NSCocoaErrorDomain Code=513 "The operation couldn’t be completed. (Cocoa error 513.)" 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 "The operation couldn’t be completed. Operation not permitted"}</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:@"themes" ofType:@"json"];
NSData *data = ;
BOOL success =[ createFileAtPath:path contents:data attributes:nil];
if (!success)
NSLog(@"Fail");
}
</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]