iOS - 无法在模拟器上写入文件

时间:2014-02-12 17:06:13

标签: ios objective-c facebook cocoa-touch plist

我试图将一个简单的.plist文件保存到我的documentsDirectory。我已经按照Facebook的文档来保存令牌,我已经实现了以下方法:

static NSString* kFilename = @"TokenInfo.plist";

[...]

- (instancetype)init {
    if (self = [super init]) {
        _tokenFilePath = [self filePath];
    }

    return self;
}

- (NSString *)filePath {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths lastObject];

    return [documentsDirectory stringByAppendingPathComponent:kFilename];
}

- (void)writeData:(NSDictionary *)data {

    NSLog(@"File = %@ and Data = %@", self.tokenFilePath, data);

    BOOL success = [data writeToFile:self.tokenFilePath atomically:YES];
    if (!success) {
        NSLog(@"Error writing to file");
    }
}

我目前正在打印NSLog(@"Error writing to file");。关于为什么会这样的想法?

2 个答案:

答案 0 :(得分:4)

您希望NSDocumentDirectory不是NSDocumentationDirectory。 Xcode中的代码完成提供了文档目录枚举之前的文档目录。这很容易错过。

答案 1 :(得分:0)

另外检查Documents目录是否存在,创建它是否安全

- (NSString *)filePath

之前将此代码段添加到return方法
NSFileManager * fm = [NSFileManager defaultManager];
NSError * err;
[fm createDirectoryAtPath: documentsDirectory withIntermediateDirectories:YES attributes:nil error:&err];
if (err)
{
    NSLog(@"%@ ", err.localizedDescription);
}