ios - 从应用程序写入 csv,Cocoa 错误 513

标签 ios cocoa-touch csv nsarray

我正在创建一个写入 CSV 文件的 iPhone 应用程序。看起来最简单的方法是从数组添加到 NSMutableString。我拥有的代码应该可以正常工作,但我会不断收到 Cocoa 错误 513

代码是:

NSArray *firstArray=[NSArray arrayWithObjects:@"A",@"b",nil];
NSMutableString *csv = [NSMutableString stringWithString:@"Strings"];

NSUInteger count = [firstArray count];
for (NSUInteger i=0; i<count; i++ ) {
    [csv appendFormat:@"\n %@",
     [firstArray objectAtIndex:i]
     ];
}

NSString *yourFileName = @"leads.csv";
NSError *error;
BOOL res = [csv writeToFile:yourFileName atomically:YES encoding:NSUTF8StringEncoding error:&error];

if (!res) {
    NSLog(@"Error %@ while writing to file %@", [error localizedDescription], yourFileName );
}

非常感谢!

最佳答案

这很可能是因为您正在写入您没有写入权限的文件位置。

Cocoa 错误 513 转换为错误 NSFileWriteNoPermissionError。

通常,当有人试图写入应用程序包中的文件时,就会发生这种情况。您不能修改已编译应用程序的捆绑文件夹的内容。这是因为 bundle 是经过签名、编译的应用程序。

当您最终通过 iTunes App Store 分发该应用程序时,该应用程序将具有一个数字签名来验证该应用程序的内容。此签名在编译时生成,一旦签名,Apple 不希望任何人篡改内容。

确保您正在写入适当的位置,例如 DocumentsTempCache,使用如下内容:

NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"subFolder"];
NSString *filePath = [dataPath stringByAppendingPathComponent:@"fileName.csv"];


if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
{
    [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder
}

BOOL res = [csv writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error];

if (!res) {
    NSLog(@"Error %@ while writing to file %@", [error localizedDescription], yourFileName );
}

这些文件夹只能由您的应用程序访问。没有其他应用程序可以访问这些文件夹的内容。 (同样,您的应用无法访问其他应用的文件夹。)

关于ios - 从应用程序写入 csv,Cocoa 错误 513,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31146664/

相关文章:

java - 从扫描仪读取并跳过空格

python - 如何在Python中垂直合并多个csv文件?

ios - 动画队列使用 Facebook POP 和 Swift 将一系列 UILabels 滑出 View

ios - 如何编码/解码具有自定义对象数组的自定义对象?

ios - 未声明委托(delegate)?

objective-c - 检测 NSUndoManager 警报 View 何时可见

ios - iOS7中自定义UITableViewCell宽度

iphone - 为什么CALayer的移动速度比UIView慢?

java - 使用 Scanner() 读取 CSV

iphone - UIKit 用来确定要加载的正确 nib 名称的模式是什么?