我可以拥有两个名称不同但模型类型相同的属性吗?
Can I have two properties with different names but same model types?
我只是想知道在编写干净的代码时是否允许这样做。
所以我有一个带有 HomeViewController 的天气应用程序,您可以调用它,显示 温度、位置 name, and date 用户当前位置天气。
然后,如果我想更改 HomeViewController 的详细信息,我会点击一个 UIButton,它会引导我进入不同位置的天气列表,将其命名为 WeatherListViewController.
WeatherListViewController 有一个 UITableView 显示不同搜索位置的不同天气并持有它。
我可以点击该列表中的任何天气,然后返回 HomeViewController 以填充给定的信息。
但是,我遇到了一个问题。在 WeatherListViewController 中,我需要始终为用户当前位置设置一个默认天气单元。所以我将其保留在第一个索引 0 处。
之后就是用户想要搜索并添加到列表中的任何天气。
所以,假设我点击当前位置的天气单元以外的位置,然后选择德克萨斯州的天气单元。它填充了 HomeViewController,这是有效的。然后假设我想回到我的 WeatherListViewController 并添加更多,但是 default weather cell 用户当前位置切换到 TexasWeatherCell 而不是新索引 0.
因此,我发现了一个有效的 hack,它具有两个模型类型相同但名称不同的属性。 defaultWeather,保存用户当前位置的天气信息,另一个 currentWeather,显示不同的天气。
这样可行吗?
This is inside my HomeViewController
private var currentWeather: CurrentWeather? {
didSet {
if let weather = currentWeather {
DispatchQueue.main.async { [weak self] in
self?.setAttributes(forWeather: weather)
}
}
}
}
private var defaultWeather: CurrentWeather?
当然可以。您的模型 CurrentWeather
是一种抽象数据类型。为了便于阅读,我建议将其重命名为 Weather
。那么您的代码将是
private var currentWeather: Weather? {
didSet {
if let weather = currentWeather {
DispatchQueue.main.async { [weak self] in
self?.setAttributes(forWeather: weather)
}
}
}
}
private var defaultWeather: Weather?
听起来不错?
我只是想知道在编写干净的代码时是否允许这样做。
所以我有一个带有 HomeViewController 的天气应用程序,您可以调用它,显示 温度、位置 name, and date 用户当前位置天气。
然后,如果我想更改 HomeViewController 的详细信息,我会点击一个 UIButton,它会引导我进入不同位置的天气列表,将其命名为 WeatherListViewController.
WeatherListViewController 有一个 UITableView 显示不同搜索位置的不同天气并持有它。
我可以点击该列表中的任何天气,然后返回 HomeViewController 以填充给定的信息。
但是,我遇到了一个问题。在 WeatherListViewController 中,我需要始终为用户当前位置设置一个默认天气单元。所以我将其保留在第一个索引 0 处。 之后就是用户想要搜索并添加到列表中的任何天气。
所以,假设我点击当前位置的天气单元以外的位置,然后选择德克萨斯州的天气单元。它填充了 HomeViewController,这是有效的。然后假设我想回到我的 WeatherListViewController 并添加更多,但是 default weather cell 用户当前位置切换到 TexasWeatherCell 而不是新索引 0.
因此,我发现了一个有效的 hack,它具有两个模型类型相同但名称不同的属性。 defaultWeather,保存用户当前位置的天气信息,另一个 currentWeather,显示不同的天气。
这样可行吗?
This is inside my HomeViewController
private var currentWeather: CurrentWeather? {
didSet {
if let weather = currentWeather {
DispatchQueue.main.async { [weak self] in
self?.setAttributes(forWeather: weather)
}
}
}
}
private var defaultWeather: CurrentWeather?
当然可以。您的模型 CurrentWeather
是一种抽象数据类型。为了便于阅读,我建议将其重命名为 Weather
。那么您的代码将是
private var currentWeather: Weather? {
didSet {
if let weather = currentWeather {
DispatchQueue.main.async { [weak self] in
self?.setAttributes(forWeather: weather)
}
}
}
}
private var defaultWeather: Weather?
听起来不错?