首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在NSMutableArray中存储数据的替代方案,这使得搜索更容易

在NSMutableArray中存储数据的替代方案,这使得搜索更容易
EN

Stack Overflow用户
提问于 2014-08-25 05:28:11
回答 2查看 37关注 0票数 0

非常需要的建议,

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

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

示例:

代码语言:javascript
运行
复制
            ExampleClass *_exampleClass = [[ExampleClass alloc]init];
            [_exampleClass setID: 1];
            [_exampleClass setPara1: @"AAA"];
            [_exampleClass setPara2: @"BBB"];
            [_exampleClass setPara3: @"CCC"];

            [List addObject: _exampleClass];


 *List being a NSMutableArray

在应用程序的其他地方,我会显示这个列表。

代码语言:javascript
运行
复制
             ExampleClass *_exampleClass = [List objectAtIndex:0];
             _exampleClass.Para1.....

唯一的问题是,在很多情况下,我必须过滤显示的内容,例如,显示Para1 != @"AAA“的列表。有了这个NSMutableArray会让它变得非常混乱,我只是想知道是否有更干净、更简单的方法?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2014-08-25 05:30:44

您是否考虑过将核心数据与内存存储结合使用?从外观上看,您的查询足够复杂,值得开销。

票数 0
EN

Stack Overflow用户

发布于 2014-08-25 11:48:29

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

如果使用数组控制器来帮助管理UI,则可以直接为filterPredicate属性赋值,让它们过滤所显示的内容。您还可以将该属性绑定到另一个控制器的属性。

表示示例的谓词(Para1 != @"AAA")非常简单:

代码语言:javascript
运行
复制
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"Para1 != 'AAA'"];

您还应该熟悉NSArray的各种...PassingTest:方法,比如-indexesOfObjectsPassingTest:。没有比这更简单或更强大的了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25476480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档