在NSMutableArray中存储数据的替代方法,使搜索更容易

时间:2014-08-24 21:28:11

标签: objective-c nsmutablearray

非常需要建议,

我正在开发一个我希望在本地暂时存储数据的应用程序

目前我已经创建了自己的类来填充类并将数据放入NSMutableArray。

示例:

            ExampleClass *_exampleClass = [[ExampleClass alloc]init];
            [_exampleClass setID: 1];
            [_exampleClass setPara1: @"AAA"];
            [_exampleClass setPara2: @"BBB"];
            [_exampleClass setPara3: @"CCC"];

            [List addObject: _exampleClass];


 *List being a NSMutableArray

在app中的其他位置,然后显示此列表。

             ExampleClass *_exampleClass = [List objectAtIndex:0];
             _exampleClass.Para1.....

在很多情况下,我只需要过滤显示的内容,例如显示列表,例如Para1!= @“AAA”。这是一个NSMutableArray使它真的很乱,我只是想知道是否有一个更简洁的方式?

由于

2 个答案:

答案 0 :(得分:0)

您是否考虑过将Core Data与内存存储一起使用?它的外观,你的查询很复杂,值得花费开支。

答案 1 :(得分:0)

听起来你可以使用NSPredicate过滤你的数组。您可以使用-[NSArray filteredArrayUsingPredicate:]从现有数组创建一个新数组,并按谓词进行过滤。您可以使用-[NSMutableArray filterUsingPredicate:]过滤可变数组,删除与谓词不匹配的对象。

如果您使用阵列控制器来帮助管理您的UI,您可以直接分配到filterPredicate属性,让他们过滤显示的内容。您还可以将该属性绑定到另一个控制器的属性。

代表你的例子的谓词(Para1!= @“AAA”)非常简单:

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"Para1 != 'AAA'"];

您还应该熟悉...PassingTest:的各种NSArray方法,例如-indexesOfObjectsPassingTest:。它没有比那更容易或更强大。