我有在同一函數中在不同條件下使用兩次以上的代碼。所以我決定使用Goto語句。但該代碼將在循環內部執行。所以我不明白如何在同一個函數中調用相同的代碼。我不想創建一個更多的功能。我的代碼是...多次執行相同的代碼。如何在循環內使用Goto語句
- (void)setSelectedSearchCriteria:(NSString *)storedValue storedTag:(NSString *)storedTag D_Key:(NSString *)D_Key D_Tag_Value:(NSString *)D_Tag_Value arrayMain:(NSMutableArray *)arrayMain bgView:(UIView *)bgView
{
//Add data
NSMutableArray *sArray = [[storedValue componentsSeparatedByString:@","] mutableCopy];
NSMutableArray *sTagArray = [[storedTag componentsSeparatedByString:@","] mutableCopy];
[sArray removeObject:@""];
[sTagArray removeObject:@""];
int maxTag = 0;
if (sTagArray.count != 0)
{
maxTag = [[sTagArray valueForKeyPath:@"@max.intValue"] intValue];
for (int i = maxTag + 1; i <= [D_Tag_Value intValue]; i++)
goto add_value;
}
else
goto add_value;
add_value:
{
NSString *D_Value = [[arrayMain objectAtIndex:[D_Tag_Value intValue]] valueForKey:PARAMETER_KEY];
if (![sArray containsObject:D_Value])
{
[sArray addObject:D_Value];
[sTagArray addObject:D_Tag_Value];
}
//Add data
UIButton *btn = (UIButton *)[bgView viewWithTag:[D_Tag_Value intValue]];
[self setSelectedButtonStyle:btn];
}
storedValue = [[[sArray valueForKey:KEY_DESCRIPTION] componentsJoinedByString:@","] mutableCopy];
storedTag = [[[sTagArray valueForKey:KEY_DESCRIPTION] componentsJoinedByString:@","] mutableCopy];
[SEARCH_CRITERIAS setValue:storedValue forKey:D_Key];
[SEARCH_CRITERIAS_TAG setValue:storedTag forKey:D_Key];
}
add_value中的代碼在for循環中執行,也在else部分中執行。所以我不知道如何管理這個。
請不要。用通用代碼創建另一個方法。 – rmaddy
我想這樣做。因爲我在sArray和sTagArray中添加了值,並且如果我創建了額外的方法,那麼我必須返回兩個數組,這是不可能的。而且我不想爲此創建兩個全局數組。 –
你可以創建一個封裝兩個數組並返回的對象,但是如果你堅持要在一個函數中完成所有操作,只需計算迭代循環的次數(在count == 0的情況下爲1;您可以使用三元運算符),然後使用循環中的代碼 – Paulw11