保存未知数量的 NSArray

Posted

技术标签:

【中文标题】保存未知数量的 NSArray【英文标题】:Saving an unknown number of NSArrays 【发布时间】:2014-02-07 05:15:50 【问题描述】:

我想制作一个 ios 应用程序,用户可以在其中存储基本对象列表。这些对象每个只有 3-4 个属性。

用户可以创建尽可能多的这些列表 (NSArray)。

我有两个问题:

    如何将这些 NSArray 保存到磁盘?有人说使用 NSUserDefaults,有人说使用 NSKeyedArchiver

    跟踪这些数组的最佳方法是什么?使用数组来存储这些数组是否明智?

提前致谢!

【问题讨论】:

【参考方案1】:

如果您的数组包含所有属性列表对象(NSStringNSDataNSDateNSNumberNSArrayNSDictionary 对象),那么您可以保存您的数组(或数组数组)直接到 plist 或用户默认值。

如果您的数组中有任何非属性列表对象,那么您需要遵守NSCoding 协议并使用NSKeyedArchiver

属性列表更容易。

【讨论】:

【参考方案2】:

您可以使用数组来存储您的数组。 并使用 plist 将这些保存到数组中,这样您就可以在内存中以与您想要的相同格式保存以显示结果。 您可以阅读以下 plist 教程enter link description here

【讨论】:

【参考方案3】:
        //Initialize an array with 3 objects and store to NSUserDefaults
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *arrayOfUserA = [[NSArray alloc] initWithObjects:@"Obj1", @"Obj2", @"Obj3", nil];
[defaults setValue:arrayOfUserA forKey:@"arrayOfUserA"];
[defaults synchronize];

//Get the array back, modify and save again
arrayOfUserA = [defaults valueForKey:@"arrayOfUserA"];
NSMutableArray *modifiedArray = [[NSMutableArray alloc] initWithArray:arrayOfUserA copyItems:YES];
[modifiedArray addObject:@"Obj4"];
arrayOfUserA = [modifiedArray copy];
[defaults setValue:arrayOfUserA forKey:@"arrayOfUserA"];
[defaults synchronize];

【讨论】:

以上是关于保存未知数量的 NSArray的主要内容,如果未能解决你的问题,请参考以下文章

在Powershell中使用Select-String匹配未知数量的多行和未知数量的行?

创建未知数量的循环

System.Reactive - 一次处理未知数量的订阅

Javascript未知数量的参数

如何合并未知数量的数组?

cin 用于未知数量的物体?