0

我对如何使用 NSMutableArrays 存储多维数据感到非常困惑。

我正在尝试将汽车的品牌、型号、年份和汽车描述(这是一个 NSString)存储在一个数组中。该应用程序会播放声音、加载描述并显示汽车图片。最初,我使用 PLIST 文件来存储这些信息。然后在加载视图时将其加载到字典中。但是,我不再实现 PLIST 文件,因为程序在运行时根据项目中的文件夹自动生成这些数据会容易得多。

文件夹细分如下:(主要资源文件夹)-> 品牌-> 型号-> 年份-> 包含图片、.mp3 和带有描述的文件的文件夹

例如:汽车 -> 福特 -> 野马 -> 1965 -> Pic、.mp3、文件中的描述

    //Go to folder
    NSString * resourcePath = [[NSBundle mainBundle] resourcePath];
    NSString * documentsPath = [resourcePath stringByAppendingPathComponent:@"Cars"];
    NSError *error;
    //Load names of all makes in folder into memory
    NSArray * listOfMakes = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsPath error:&error];

然后我使用多个“for”循环来遍历这个文件夹和所有其他文件夹,并将其他所有内容加载到 NSArrays 中。

但是,我需要一个可在程序范围内访问的单个数组。所以,我在单例中这样做。我想将这些数组添加到 NSMutableArray,以便我可以在任何地方访问它。我已经查看了许多其他问题,例如: objective-c 访问数组在多维 NSMutableArray 中添加对象如何将字符串对象添加到 NSMutableArray,但我仍然很困惑,因为这些仅涵盖三个维度。拥有多个数组数组非常令人困惑......

任何帮助将不胜感激。

4

3 回答 3

2

当涉及到多维...
我建议你使用 NSMutableDictionary 或 NSDictionary。

但是我在你的实现中看到的最糟糕的事情是你试图一次加载/保存整个应用程序数据,这些数据将保留在内存中,直到应用程序没有退出,因为它存储在单例中。

如果您使用 CoreData 并仅加载所需的内容会更好。

于 2013-09-19T06:29:02.000 回答
0

如果你想要一个二维数组,而不是每辆车只有一个汽车数组:

[2dimArray addObject:@[make, model, year, description]];
于 2013-09-19T08:23:18.790 回答
0

我不知道你是如何构建应用程序的逻辑的,但如果我是你,我会这样做: 1. 制作基于导航的应用程序。2. 在第一个视图中显示模型列表(从 Makes 文件夹加载模型列表)。3. 选择特定型号后,在下一个视图中显示年份列表。等等,而且,不需要将所有文件夹的所有内容读入数组。祝你好运!

于 2013-09-19T06:23:31.547 回答