2 lpploverou LPPloveROU 于 2012.10.30 13:05 提问

怎么样让不同变量重复一个动作?

举例说明我想实现的,比如我有十个变量(整数值)以及变量的值,一个字符串。

然后代码中是判断云的数量决定天气状况:

 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的值,能不能对所有组都变成通用方法?

2个回答

g989_1314125
g989_1314125   2012.10.30 13:34
已采纳

方法如下:

- (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];
Chengzi_963
Chengzi_963   2012.10.30 14:00
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;
}
Mr_me
Mr_me 代码真不错,+1个支持票
大约 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!