好了,当然这是可能的,这是没有问题的。在我的代码我有我的工作与多个对象,他们需要持久性数据。要做到这一点,我使用的对象编码并将其存储在数据文件中。如:

-(NSString *)dataFilePath
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    return [documentsDirectory stringByAppendingPathComponent:kFilename];
}

和然后进一步沿另一个代码部分:

NSMutableData *data = [[NSMutableData alloc] init];
        NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
        NSLog(@"Test 4");
        [archiver encodeObject:playerTwo forKey:@"PlayerTwoObject"];
        [archiver encodeObject:singlePlayer forKey:@"SinglePlayer"];
        [archiver encodeObject:playerOne forKey:@"PlayerOneObject"];
        [archiver encodeObject:settings forKey:@"Settings"];


        [archiver finishEncoding];
        [data writeToFile:[self dataFilePath] atomically:YES];
        [singlePlayer release];
        [playerOne release];
        [playerTwo release];
        [settings release]; 

和,节省的对象。我知道它的作品,因为我可以带他们出去与此代码:

unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:[[NSMutableData alloc] initWithContentsOfFile:[self dataFilePath]]];
    SettingsObject *settings = [unarchiver decodeObjectForKey:@"Settings"];
    Player *test = [unarchiver decodeObjectForKey:@"PlayerOneObject"];
    NSLog(@"Power On Settings Test: %d,%d", [settings playerOneStartingLife], [settings singlePlayerStartingLife]);
    NSLog(@"Power On Player Test: %@,%d", [test name], [test life]);

酷!所以,现在我可以存储我的对象,并读出来。 因此,这是问题的用武之地。在不同的班级我拿出我存储的对象和工作,它的一个。不是所有的人,我只宣读了一个。然后我重新保存后,我改变设置。但我只保存:

NSMutableData *data = [[NSMutableData alloc] init];
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
    [archiver encodeObject:singlePlayer forKey:@"SinglePlayer"];
    [archiver finishEncoding];
    [data writeToFile:[self dataFilePath] atomically:YES];
    [singlePlayer release];

我已经做了之后,的所有其余对象我已存储的被删除。现在我很困惑,因为我觉得我只是编辑一键通“单人”,但显然这在某种程度上消除他们的休息吗?是supossed发生什么呢?我曾与解除存档的一些问题,会影响到它在所有...我不认为它会。有没有人有这方面的一些见解,因为我不希望有采取所有的对象并重新编码他们,如果我只是想给他们一个编辑...

感谢您的帮助!

有帮助吗?

解决方案

您创建一个新的归档,与emtpy数据对象。你写数据的单人对象,但你不要将其他数据存储在同一个,新创建的归档。

要做到这一点,取消归档整个先前存储的存档,然后调整单人对象和归档,并保存它一次。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top