Ios objective-c中的泛型枚举类型
我有两个objective-c类Ios objective-c中的泛型枚举类型,ios,objective-c,swift,enums,Ios,Objective C,Swift,Enums,我有两个objective-c类Hondalership和FordDeverhip。它们都包含相似的属性和方法,因此我想定义一个通用协议经销商,并执行一些多态性 问题在于经销商需要包含通用枚举类型属性,以便Hondalership和FordDeverage可以具有不同的具体的枚举类型 所以我想要这样的东西 @protocol DealerShip @property (nonatomic, readonly) enum location; -(void)printPriceOfModel:
Hondalership
和FordDeverhip
。它们都包含相似的属性和方法,因此我想定义一个通用协议经销商
,并执行一些多态性
问题在于经销商
需要包含通用枚举类型属性,以便Hondalership
和FordDeverage
可以具有不同的具体的
枚举类型
所以我想要这样的东西
@protocol DealerShip
@property (nonatomic, readonly) enum location;
-(void)printPriceOfModel:(enum)vehicleModel;
@end
我可以在objective-c中执行类似的操作吗?不,您不能在objective-c中使用带有关联类型的枚举。该语言不支持它
typedef NS_ENUM(NSInteger, HondaLocation) {
HondaLocationSouthEast,
HondaLocationNorthWest
}
typedef NS_ENUM(NSInteger, HondaModel) {
Accord,
Civic
}
@interface HondaDealerShip: NSObject<DealerShip>
@property (nonatomic, readonly) HondaLocation location;
- (void)printPriceOfModel:(HondaModel)vehicleModel {
//print price here
}
@end
typedef NS_ENUM(NSInteger, FordLocation) {
FordLocationEast,
FordLocationWest
}
typedef NS_ENUM(NSInteger, FordModel) {
Mustang,
Focus
}
@interface FordDealerShip: NSObject<DealerShip>
@property (nonatomic, readonly) FordLocation location;
- (void)printPriceOfModel:(FordModel)vehicleModel {
//print price here
}
@end
protocol DealerShip {
associatedtype Location
associatedtype Model
var location: Location { get }
func printPriceOfModel(model : Model)
}
enum HondaLocation: Int {
case sountEast
case northWest
}
enum HondaModel: Int {
case accord
case civic
}
struct HondaDealerShip: DealerShip {
var location: HondaLocation
func printPriceOfModel(model: HondaModel) {
//print
}
}
//same for FordDealerShip