0

此代码没有给出任何错误,但它没有创建“plist”文件,也没有从中读取。

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

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

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

我逐行按照在线说明进行操作。

我复制了确切的Employee.h文件Employee.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

但是没有创建文件。

4

1 回答 1

0

您正在使用 NSDocumentationDirectory 而不是 NSDocumentDirectory。

利用。,

NSURL *documentDir = [[NSFileManager defaultManager]
                          URLForDirectory:NSDocumentDirectory
                          inDomain:NSUserDomainMask
                          appropriateForURL:nil
                          create:NO
                          error:nil];
于 2014-05-15T21:28:56.110 回答