无法将文件存档和取消归档到文档文件夹

时间:2014-05-15 18:47:15

标签: objective-c nskeyedarchiver nskeyedunarchiver

此代码不会产生任何错误,但它不会创建" plist"提交或阅读。

我写了一个代码,指定文件夹的直接路径,它创建并写入文件,尽管它无法从中读取。

[NSKeyedArchiver archiveRootObject:employees toFile:@"/Users/Documents/employees.plist"];

以下代码无法写入或读取文件。

我一行一行地跟着在线说明。

我复制了确切的Employee.hEmployee.m文件,并且没有任何错误。

感谢您的帮助。

#import <Foundation/Foundation.h>

#import "Employee.h"


NSString* getPropertyListPath() {

    NSURL *documentDir = [[NSFileManager defaultManager]
                         URLForDirectory:NSDocumentationDirectory
                                inDomain:NSUserDomainMask
                       appropriateForURL:nil
                                  create:NO
                                   error:nil];

    NSURL *plist = [documentDir URLByAppendingPathComponent:@"EmployeeFile.plist"];

    return plist.path;

}



void createAndArchiveObjects (NSString *filePath) {

    NSLog(@"Creating objects manually");

    Employee *john = [[Employee alloc] init];

    [john setFirstName:@"A"];
    [john setLastName:@"J"];
    [john setEmployeeNumber:12345];
    [john setHireDate:[NSDate date]];

    NSMutableArray *employees = [[NSMutableArray alloc] init];

    [employees addObject:john];

    [NSKeyedArchiver archiveRootObject:employees toFile:filePath];

    NSLog(@"Objects created and archived");
}



void unarchiveSavedObjects(NSString *filePath) {

    NSMutableArray *employees = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];

    for (Employee *e in employees) {
        NSLog(@"The unarchived, reconstituted object is %@", e);
    }
}



int main(int argc, const char * argv[])
{

    @autoreleasepool {


        NSString *path = getPropertyListPath();

        if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {

            unarchiveSavedObjects(path);

        } else {

            createAndArchiveObjects(path);

        }

    }
    return 0;
}

NSLog显示:

Creating objects manually
Objects created and archived

但是没有创建文件。

1 个答案:

答案 0 :(得分:0)

您正在使用NSDocumentationDirectory而不是NSDocumentDirectory。

使用。,

NSURL *documentDir = [[NSFileManager defaultManager]
                          URLForDirectory:NSDocumentDirectory
                          inDomain:NSUserDomainMask
                          appropriateForURL:nil
                          create:NO
                          error:nil];