• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iphone - 有没有办法在不进行硬编码的情况下缩短我的 Country ViewController.m?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 23:04:03 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我想知道是否有办法缩短我的 CountryViewController.m,因为每次添加新国家/地区时我都会添加另一个 else if 语句。

我正在使用一个 UITableViews 来推送一个新的表格 View 。

RootViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
    
    ASIA   = [[NSMutableArray alloc] init];
    EU     = [[NSMutableArray alloc] init];

    [ASIA    addObject: @"China"];
    [ASIA    addObject: @"Japan"];
    [ASIA    addObject: @"Korea"];
    [EU      addObject: @"France"];
    [EU      addObject: @"Italy"];
    [EU      addObject: @"Switzerland"];

    self.title = @"Continent";
}

CountryViewController.m

- (void)viewWillAppearBOOL)animated
{
    [super viewWillAppear: animated];

    if ([self.title isEqualToString: @"China"]) {
        _listOfCities = [[NSMutableArray alloc] init];
        [_listOfCities addObject: @"Beijing"];
        [_listOfCities addObject: @"Hong Kong"];
    }

    else if ([self.title isEqualToString: @"Japan"]){
        _listOfCities = [[NSMutableArray alloc] init];
        [_listOfCities addObject: @"Tokyo"];
    }

    else if ([self.title isEqualToString: @"Korea"]){
        _listOfCities = [[NSMutableArray alloc] init];
        [_listOfCities addObject: @"Seoul"];
    }

    else if ([self.title isEqualToString: @"France"]){
        _listOfCities = [[NSMutableArray alloc] init];
        [_listOfCities addObject: @"aris"];
        [_listOfCities addObject: @"Versailles"];
    }

    else if ([self.title isEqualToString: @"Italy"]){
        _listOfCities = [[NSMutableArray alloc] init];
        [_listOfCities addObject: @"Rome"];
    }

    else if ([self.title isEqualToString: @"Switzerland"]){
        _listOfCities = [[NSMutableArray alloc] init];
        [_listOfCities addObject: @"Bern"];
    }

    [self.tableView reloadData];
}



Best Answer-推荐答案


一个简单的方法是使用 property list并将其作为捆绑资源包含(即只需将其添加到您的项目中)。

例如,如果您的属性列表如下所示: enter image description here

然后您可以使用

加载它
countries = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource"CountryData" ofType"plist"]];

并将其用作普通字典或数组,即

- (void)viewWillAppearBOOL)animated
{
    [super viewWillAppear: animated];

    NSString* countryName = self.title;
    NSDictionary* country = [countries objectForKey:countryName];
    NSArray* cities = [country objectForKey"Cities"];
    NSString* continent = [country objectForKey"Continent"];
    _listOfCities = cities;

    [self.tableView reloadData];
}

Plist 文件可以在 XCode 中轻松编辑。

关于iphone - 有没有办法在不进行硬编码的情况下缩短我的 Country ViewController.m?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12824214/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap