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

NSDocumentDirectory の代わりに NSDocumentationDirectory を使用しています。

使用する。、

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