好吧,我是目标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]);
答案 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];
}
}