gpt4 book ai didi

iphone - 如何在 iOS 中保存一个充满自定义类的数组?

转载 作者:搜寻专家 更新时间:2023-10-30 20:27:04 25 4
gpt4 key购买 nike

在我为学校项目创建的 iOS 应用程序中,我无法保存存储在 NSMutableArray 中的数据。该数组是在应用程序委托(delegate)文件中创建的,然后它的委托(delegate)是在各种其他 View Controller 文件中创建的。存储在数组中的数据由自定义类组成,这些类由 NSStrings 和 NSNumbers 作为属性组成。

我已经阅读并关注了这个站点上的许多示例大约一个星期了,但我终究还是弄不明白。我也研究了核心数据,但我不知道如何在不完全重新开始的情况下实现它,不幸的是我时间紧迫。

我尝试过的事情:

在 WillTerminate 方法中归档。 (activityArray 是我的数组)

- (void)applicationWillTerminate:(UIApplication *)application {
NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString* arrayFile = [documentsPath stringByAppendingPathComponent:@"arrayFile"];
[NSKeyedArchiver archiveRootObject:activityArray toFile:arrayFile];
[activityArray release];

然后在 AppDelegate 文件的 didFinishLaunchingWithOptions 方法中解压

    NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *arrayFile = [documentsPath stringByAppendingPathComponent:@"arrayFile"];
if ([fileManager fileExistsAtPath:arrayFile]) {
NSLog(@"yes");
activityArray = [NSMutableArray arrayWithContentsOfFile:arrayFile];
} else {
activityArray = [[NSMutableArray alloc] init];
}

根据对其他问题的建议,我在自定义类中执行了以下操作(此类有 2 个 NSString、activityName 和 activityDescription)。

- initWithCoder:(NSCoder *)aCoder {
self = [super init];
activityName = [[aCoder decodeObjectForKey:@"activityName"] retain];
activityDescription = [[aCoder decodeObjectForKey:@"activityDescription"] retain];
return self;
}

-(void)encodeWithCoder:(NSCoder *)aCoder {
[aCoder encodeObject:activityName forKey:@"activityName"];
[aCoder encodeObject:activityDescription forKey:@"activityDescription"];
}

但是这些似乎都不适合我。非常感谢任何帮助。我觉得这应该是一件相当容易的事情,但我似乎无法理解。

最佳答案

Core Data 其实实现起来非常简单和快速。我做了一个blog post几个月前快速设置它。只需创建实体来表示您创建的不同类或自己添加 @dynamic 属性。

请记住,Core Data 的行为与数组相同,因为只能存储对象。因此,您需要将 NSNumber 用于 int\floats 等。

关于iphone - 如何在 iOS 中保存一个充满自定义类的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5524107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com