举例说明我想实现的,比如我有十个变量(整数值)以及变量的值,一个字符串。
然后代码中是判断云的数量决定天气状况:
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;
}