问题描述
- 怎么样让不同变量重复一个动作?
- 举例说明我想实现的,比如我有十个变量(整数值)以及变量的值,一个字符串。
然后代码中是判断云的数量决定天气状况:
if (hour1cloud <= 5) { hour1weather = @""Clear""; } if (5 < hour1cloud <= 25) { hour1weather = @""Mostly Clear""; } if (25 < hour1cloud <= 50) { hour1weather = @""Partly Cloudy""; } if (50 < hour1cloud <= 83) { hour1weather = @""Mostly Cloudy""; } if (83 < hour1cloud <= 105) { hour1weather = @""Overcast""; }
然后 hour2cloud hour3cloud hour4cloud分别对应hour2weather hour3weather等。当我输入hour1cloud获取hour1weather的值,能不能对所有组都变成通用方法?
解决方案
方法如下:
- (NSString*)weatherStringFromCloud:(int)cloud { NSString *weather; if (cloud <= 5) { weather = @""Clear""; } else if (cloud <= 25) { weather = @""Mostly Clear""; } else if (cloud <= 50) { weather = @""Partly Cloudy""; } else if (cloud <= 83) { weather = @""Mostly Cloudy""; } else if (cloud <= 105) { weather = @""Overcast""; } else { weather = nil; } return weather;}
然后用不同变量调用:
hour1weather = [self weatherStringFromCloud:hour1cloud];hour2weather = [self weatherStringFromCloud:hour2cloud];hour3weather = [self weatherStringFromCloud:hour3cloud];hour4weather = [self weatherStringFromCloud:hour4cloud];
解决方案二:
static NSString *stringForCloudiness(int cloudiness) { static int const kCloudinesses[] = { 5 25 50 83 105 }; static NSString *const kStrings[] = { @""Clear"" @""Mostly Clear"" @""Partly Cloudy"" @""Mostly Cloudy"" @""Overcast"" }; static int const kCount = sizeof kCloudinesses / sizeof *kCloudinesses; for (int i = 0; i < kCount; ++i) { if (cloudiness <= kCloudinesses[i]) { return kStrings[i]; } } return @""A cloudiness level unparalleled in the history of recorded weather"";}
接下来要同步数组:
static NSString *stringForCloudiness(int cloudiness) { typedef struct { int cloudiness; __unsafe_unretained NSString *string; } CloudStringAssociation; static CloudStringAssociation const kAssociations[] = { { 5 @""Clear"" } { 25 @""Mostly Clear"" } { 50 @""Partly Cloudy"" } { 83 @""Mostly Cloudy"" } { 105 @""Overcast"" } { INT_MAX @""A cloudiness level unparalleled in the history of recorded weather"" } }; int i = 0; while (cloudiness > kAssociations[i].cloudiness) { ++i; } return kAssociations[i].string;}
时间: 2024-11-03 16:30:10