我的带有Order对象的src数组:
Item 1: ID=1,typeID=7,description="some text 1"Item 2: ID=2,description="some text 2"Item 3: ID=3,typeID=5,description="some text 3"Item 4: ID=4,description="some text 4"Item 5: ID=5,typeID=8,description="some text 5"
应用过滤器后,我返回的数组应如下所示:
Item 2: ID=2,description="some text 2"Item 4: ID=4,description="some text 5"
有人可以建议这样做的最佳方式,谢谢.
解决方法 方法一:– (NSIndexSet *)indexesOfObjectsPassingTest:(BOol(^)(ID obj,NSUInteger IDx,BOol * stop))谓词
我想的是:
__block NSMutableSet *uniqueTypeIDs = [NSMutableSet set];NSIndexSet *set = [myArrayOfObjects indexesOfObjectsPassingTest:^BOol(ID object,BOol *stop) { if([uniqueTypeIDs containsObject:[NSNumber numberWithInt:object.typeID]]) { return NO; } else { [uniqueTypeIDs addobject:[NSNumber numberWithInt:object.typeID]]; return YES; }}];
你的typeID需要转换为NSNumber吗?你决定.
返回的NSIndexSet将包含通过测试的所有对象的索引.然后,您可以对这些对象执行 *** 作,或从阵列中删除它们.
方法二:
或者使用NSSet.如果您的对象确实是唯一的,那么将数组转换为一个集合然后返回一个数组 – 这是丢失重复对象的最简单方法.
NSSet *set = [NSSet setWithArray:array];
制作由独特对象组成的集合
[set allObjects];
为您提供集合中所有对象的数组
方法三:
另一种方法是使用类型ID作为键的NSMutableDictionary;迭代数组,并使用typeID(转换为NSNumber)作为存储索引的键.如果您发现字典中已存在密钥,请不要再次添加.结果是一个包含原始数组中唯一对象索引的字典.
总结以上是内存溢出为你收集整理的ios – 使用object属性从NSArray中过滤复制全部内容,希望文章能够帮你解决ios – 使用object属性从NSArray中过滤复制所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)