好吧,也许我不再明白了,希望你能帮忙。
我正在尝试使用以下方法从NSMutableArray中选择一个对象:
if([car.seat isEqualToString:@"fancyOne"]){
fancyThings = [[NSMUtableArray]init];
[fancyThings addObjects: car];
}
现在我忘了告诉你我是这个Objective-C的新手,所以也许我的想法是错误的。
我基本上要做的是通过选择其组件的值从一个数组中获取一个Object。
这是这样做的方法,但是我的if语句仍然遇到问题。
如果我省略了IF语句,它确实用我完全相同的对象(thisCar)填充了我的另一个NSMutableArray
,但是如果我放入IF语句,它就不会发现{{1}中的字符串是相同的1}}。
我在下一个示例中将所有内容放在thisCar.seat
中,但有一些normalThings
包含字符串aCar.seats
。我检查了空间上的XML文件和那些东西,但据我所知,一切都是有序的。
我应该使用FANCYONE
代替NSScanner
来构建它吗?
IsEqualToString
修改
我的坏!提供的代码实际上是有序的! 我的XMLParser中有一个错误,它在字符串中添加了空行,所以我无法获得相同的字符串!
答案 0 :(得分:1)
希望这会给你一些指导:
//init new array
NSMutableArray *fancyThings = [[NSMutableArray alloc] init];
//walk your array
for (SomeCarObject *thisCar in arrayOfCars) {
//is thisCar a qualifying object
if ([thisCar.seat isEqualToString:@"fancyOne"]) {
//yes, add thisCar object
[fancyThings addObject:thisCar];
}
}
答案 1 :(得分:0)
您需要在for循环之外创建NSMutableArray
(假设您正在遍历集合)。然后你可以像你一样添加NSMutableArray
。
希望这有帮助!
顺便说一下,你应该用你所做的评论来编辑你的问题......答案 2 :(得分:0)
这取决于你所处理的物体的数量。如果有1000个或更少的对象,这个方法看起来不错。但是如果有更多的对象,你有可能冻结你的应用程序,并有大量的内存泄漏。 此外,如果你以后需要并发代码,你必须记住一些 其他方案。 你不仅可以使用u数组中的字符串对象,你可以尝试在对象启动应用程序后填充u数组,如果字符串相同或不相同则响应。或者使用带有适当密钥的nsdictionary。 请阅读我的帖子multithread search design