用于从文件创build一组对象的单独的类?

我正在创build一个iPhone应用程序,同时学习OOP。 我有两个名为GUTimer和GUInterval的类。 每个实例需要归档到plist,并在需要时单独解除存档。 我的问题是,我应该创build一个pipe理类,负责pipe理这些对象types的加载和保存。 还是应该创build单独的类,一个pipe理GUTimer实例的保存和加载,另一个pipe理GUInterval实例的保存和加载? 我仍然在学习面向对象,这是我的分级项目,所以我只是想拿出最好的解决scheme。 任何帮助,将不胜感激。 谢谢。

我会让你的对象实现NSCoding协议,然后使用这样的东西来存档/取消存档他们:

+ (NSObject *)readArchiveFile:(NSString *)inFileName { NSFileManager *fileMgr = [NSFileManager defaultManager]; NSString *documentsDirectoryPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectoryPath, inFileName]; NSObject *returnObject = nil; if( [fileMgr fileExistsAtPath:filePath] ) { returnObject = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath]; } return returnObject; } + (void)archiveFile:(NSString *)inFileName inObject:(NSObject *)inObject { NSString *documentsDirectoryPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectoryPath, inFileName]; BOOL didSucceed = [NSKeyedArchiver archiveRootObject:inObject toFile:filePath]; if( !didSucceed ) { NSLog(@"File %@ write operation %@", inFileName, didSucceed ? @"success" : @"error" ); } } + (void)deleteFile:(NSString *)inFileName { NSFileManager *fileMgr = [NSFileManager defaultManager]; NSString *documentsDirectoryPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0]; NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectoryPath, inFileName]; NSError *error; if ( [fileMgr fileExistsAtPath:filePath] && [fileMgr removeItemAtPath:filePath error:&error] != YES) { NSLog(@"Unable to delete file: %@", [error localizedDescription]); } } 

这个问题并没有一个正确的答案。 如果你正在学习面向对象,那么你很快就会明白这一点。 我可以给的最好的build议是把你的对象分解成function区和大小区。 为了可读性,你想要避免巨大的类,但除此之外,它基本上取决于你自己的偏好。 如果你能certificate一个特定的devise决定,那么它可能会为你工作。