Objective C数组计数字符串问题

时间:2013-06-16 03:38:54

标签: ios objective-c

好吧,我是目标C的新手,我正在努力学习它,而不必费心去堆积溢出社区,但它实际上与我习惯的(C ++)完全不同。

但是我遇到了一个问题,我为我的生活无法弄清楚,我确信它会变得愚蠢。但是我从一个网站上提取问题和答案,然后使用此代码在我的iOS应用程序上显示。

NSString * GetUrl = [NSString stringWithFormat:@"http://www.mywebpage.com/page.php"];
NSString * GetAllHtml = [NSString stringWithContentsOfURL:[NSURL URLWithString:GetUrl] encoding:1 error:nil];

NSString *PullWholeQuestion = [[GetAllHtml componentsSeparatedByString:@"<tr>"] objectAtIndex:1];
NSString *FinishWholeQuestion = [[PullWholeQuestion componentsSeparatedByString:@"</tr>"] objectAtIndex:0];

在我获得所有网页信息后,我删除了每个问题,并希望将其设置为循环过程以提取问题所以基本上我需要计算FinishedWholeQuestion变量有多少数组选项

我在网上发现这个片段似乎与那个例子有关,但是我无法重复它

NSArray *stringArray = [NSArray arrayWithObjects:@"1", @"2", nil];
NSLog(@"count = %d", [stringArray count]);

1 个答案:

答案 0 :(得分:3)

componentsSeparatedByString”返回NSArray对象,而不是单个NSString。

数组对象可以包含零个,一个或多个NSString对象,具体取决于输入。

如果将“FinishWholeQuestion”更改为NSArray对象,则可能会获得一些组件(由字符串分隔)。

现在我正在仔细查看你的代码,我看到你假设你的数组总是有效(并且有超过2个条目,如下所示) “objectAtIndex: 1”位。

您还应该更改所有Objective-C变量的第一个字符。 Objective-C中的最佳实践是变量的第一个字符应始终为小写。

像这样:

NSString * getUrl = [NSString stringWithFormat:@"http://www.mywebpage.com/page.php"];
NSString * getAllHtml = [NSString stringWithContentsOfURL:[NSURL URLWithString:getUrl] encoding: NSUTF8StringEncoding error:nil];

NSArray * allQuestions = [getAllHtml componentsSeparatedByString:@"<tr>"];
if([allQuestions count] > 1)
{
    // assuming there is at least two entries in this array
    NSString * pullWholeQuestion = [allQuestions objectAtIndex: 1];
    if(pullWholeQuestion)
    {
        NSString *finishWholeQuestion = [[pullWholeQuestion componentsSeparatedByString:@"</tr>"] objectAtIndex:0];
    }
}