Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios objective-c中的泛型枚举类型_Ios_Objective C_Swift_Enums - Fatal编程技术网

Ios 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:

我有两个objective-c类
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