Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone NSArray-快速查找已知描述对象索引的方法_Iphone_Cocoa - Fatal编程技术网

Iphone NSArray-快速查找已知描述对象索引的方法

Iphone NSArray-快速查找已知描述对象索引的方法,iphone,cocoa,Iphone,Cocoa,嗨,我有一排id对象。 我知道对象描述字符串。 如何查找对象并避免数组枚举? p、 我不喜欢使用NSDictionary,因为编写代码更难试试这个: [myArray containsObject:yourObject]; 或者您可以对其进行过滤: [myArray filterUsingPredicate:predicate]; 如果这是您计划更频繁执行的查找,并且速度是一个问题,那么您可能不应该将对象存储在NSArray中,而应该首先存储在NSDictionary中,其中键是对象的描述字

嗨,我有一排id对象。 我知道对象描述字符串。 如何查找对象并避免数组枚举? p、 我不喜欢使用NSDictionary,因为编写代码更难

试试这个:

[myArray containsObject:yourObject];
或者您可以对其进行过滤:

[myArray filterUsingPredicate:predicate];

如果这是您计划更频繁执行的查找,并且速度是一个问题,那么您可能不应该将对象存储在NSArray中,而应该首先存储在NSDictionary中,其中键是对象的描述字符串,值是对象本身。然后可以使用objectForKey:将描述字符串作为参数,这是O1查找。

请仔细阅读,我没有对象,我只有描述字符串。请指定谓词对象描述???NSLog@%@[myObject description];打印对象。。。你指的是这个描述吗?是的,我已经在另一个地方保存了[myObject description],我想在数组中找到这个描述对象请发布你的数组结构。。。因为我觉得我的两个答案都会有一点变化。。。但是我需要检查和自定义。@user170317:如果您使用对象描述作为某种标识符,甚至将它们保存到磁盘o.o,那么您显然走错了方向。毫无疑问,像Cocoa这样的大型框架的学习曲线是陡峭的,但你未来的自我是否会成为一个帮手,避免学习简单但显然很糟糕的黑客——这正是你滥用描述的罪过。从长远来看,你会学得更快,成为一名更好的程序员。我不使用字典的原因,bcs我需要更清楚code@user170317:字典产生更干净的代码。这就是它们被发明的原因。抽象。我们可以一起废除复杂的数据结构,用简单的列表进行所有编程。但是很快人们就看不见森林了。需要时使用dicts按键存储和检索对象,需要时使用set需要时使用set需要时存储唯一对象,需要时使用数组订购对象。尝试从一开始就以正确的方式学习,避免以后需要忘记错误/低劣的方法。也就是说,如果需要通过给定的键存储和检索对象,请使用字典。使用[dict setObject:object forKey:@key]和[dict objectForKey:@key]不仅比使用谓词过滤数组更容易掌握,而且速度更快,通常是更好的方法。@Regexident:我不知道他的要求是什么我回答的谓词将解决你的问题,但他需要其他东西。。。请用注释检查我的答案。此外,对象描述的目的不是用作任何类型的键/谓词。它的主要用途是调试/记录。其他的一切通常都表明某种程度的错误。@AnoopVaidya:虽然你的回答可能解决OP的问题,但这并不能改变OP显然找错了方向的事实。一个人可以告诉他如何去做OP错误的事情,尝试少做一点错误,或者如何去做正确的事情。我总是倾向于后者。@Regexident:是的,我同意你的看法。