使用IF语句将对象从NSMutableArray复制到另一个

时间:2011-01-17 22:20:57

标签: iphone objective-c ios nsmutablearray ios-4.2

好吧,也许我不再明白了,希望你能帮忙。

我正在尝试使用以下方法从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中有一个错误,它在字符串中添加了空行,所以我无法获得相同的字符串!

3 个答案:

答案 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