1

好的,也许我看不清楚了,希望您能提供帮助。

我正在尝试使用以下方法从 NSMutableArray 中选择一个对象:

if([car.seat isEqualToString:@"fancyOne"]){
    fancyThings = [[NSMUtableArray]init];
    [fancyThings addObjects: car];
}

现在我忘了告诉你我是这个 Objective-C 的新手,所以也许我想错了。

我基本上想做的是通过选择它的组件的值从一个数组中获取一个对象。

这是做到这一点的方法,但是我的 if 语句一直有问题。如果我省略 IF 语句,它会NSMutableArray用完全相同的对象(thisCar)填充我的另一个,但如果我放入 IF 语句,它不会发现字符串在thisCar.seat.

我的下一个示例将所有内容都放入其中,normalThings但有些aCar.seats包含字符串FANCYONE。我检查了有关空格的 XML 文件和诸如此类的东西,但据我所知,一切都井井有条。

我应该使用NSScanner而不是构建它IsEqualToString吗?

- (void)viewDidLoad {  
    appDelegate = (XMLAppDelegate *)[[UIApplication sharedApplication] delegate];  
    appDelegate.fancyThings = [[NSMutableArray alloc]init];  
    for (CARS *aCar in appDelegate.someCars) {  
        if ([aCar.seats isEqualToString:@"FANCYONE"]){  
            [appDelegate.fancyThings addObject:aCar];  
        }  
        else {  
            [appDelegate.normalThings addObject:aCar];  
        }  
    }  
    self.title = @"Cars";  
    super viewDidLoad];  
}   

编辑:

我的错!!提供的代码实际上是有序的!我的 XMLParser 中有一个错误,它在字符串中添加了空行,所以我无法获得相等的字符串!

4

3 回答 3

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];
    }
}
于 2011-01-18T01:05:33.190 回答
0

您需要NSMutableArray在 for 循环之外创建它(假设您正在遍历一个集合)。然后你可以NSMutableArray像你一样添加它。

希望这可以帮助!

顺便说一句,您应该使用您所做的评论来编辑您的问题以详细说明它。

于 2011-01-17T23:36:37.517 回答
0

这取决于您处理的对象的数量。如果有 1000 个或更少的对象,则此方法看起来不错。但是如果有更多的对象,你就有可能冻结你的应用程序并且有很大的内存泄漏。此外,如果您稍后需要并发代码,您必须记住一些其他解决方案。你可以在你的数组中使用不只是一个字符串对象,你可以在应用程序启动后尝试在对象中填充你的数组,如果字符串相同或不同,则响应。或者使用带有适当键的 nsdictionary。请阅读我的帖子多线程搜索设计

于 2011-01-18T11:00:13.110 回答