在NSArray中使用多个对象

时间:2016-03-03 21:38:35

标签: ios objective-c arrays nsarray

有一个表格视图,其中包含一系列内容。用户可以在此表中选择多行。我将每个存储在一个数组中。

然后我想循环遍历该数组,以获取它自己的字符串中的每个项目,我可以将其设置为一个键。

这是我尝试过的东西:

for (NSString *str in self.myArray) {
        if ([str isEqual:@"Blah"]) {
            self.blahString = str;
        } else {
            self.blahString = @"";
        }

        if ([str isEqual:@"Blah Blah"]) {
            self.blahblahString = str;
        } else {
            self.blahblahString = @"";
        }

        if ([str isEqual:@"Blah Blah Blah"]) {
            self.blahblahblahString = str;
        } else {
            self.blahblahblahString = @"";
        }
}

if (self.myArray.count == 0) {
     [self.answersToPass setObject:@"" forKey:@"Blah"];
     [self.answersToPass setObject:@"" forKey:@"Blah Blah"];
     [self.answersToPass setObject:@"" forKey:@"Blah Blah Blah"];
} else {
     [self.answersToPass setObject:self.blahString forKey:@"Blah"];
     [self.answersToPass setObject:self.blahblahString forKey:@"Blah Blah"];
     [self.answersToPass setObject:self.blahblahblahString forKey:@"Blah Blah Blah"];
}

这里的目标是,如果用户没有选择任何内容,那么只需将每个objectForKey设置为空字符串,否则拉出每个字符串并将其匹配到右键。

编辑:

我相信我已经解决了我的问题。我完全抓住了上面的代码。

我发现了一个'操作顺序'错误。完全是我的错。应该仔细查看我的代码。

如果我再遇到任何问题,我会在此处更新帖子。

我感谢大家的投入和帮助。我为自己的问题不够透彻而道歉。

2 个答案:

答案 0 :(得分:0)

你的问题并非超级明确,所以我会尽我所能,但我不确定你究竟想要什么。

1)如果用户选择了某些内容,听起来就像是在检查。为什么?这是一个糟糕的主意。相反,当用户实际选择某些内容时add a responder to change stuff

2)这种手动设置不是很好 - 如果有一天你想拥有500种不同的物品怎么办?你打算手动输入每个if语句吗?

尝试更像这样的事情。

for (NSString *string in self.myArray)
{
    if (self.answersToPass[string])
        [self.answersToPass setObject: string forKey:string];
    for (id key in self.answersToPass)
        if (key isEqualToString:(string))
            [self.answersToPass setObject: string forKey:key];
        else [self.answersToPass setObject: "" forKey:key];
}

请注意,以上内容未经过测试,因此您可能需要修复我的obj c符号或其他内容的一些错误,但它应该显示正确的想法。

我会注意到这个字母的基本结构与字母彼此相等听起来非常愚蠢。为什么要存储一个键或值相等或值为null的值,然后每次检查?拿一堆布尔值不是更容易吗?或者是布尔字符串的地图?

答案 1 :(得分:0)

您最好将数据结构(例如NSMutableArray或NSMutableDictionary)定义为属性,并将str存储到其中,以便以后可以访问它们。

@property (nonatomic, strong) NSMutableArray *array; 
for (NSString *str in self.myArray) {
[array addObject str];
}