[英]Enum strings instead of int
我有3個選項的分段控件。 我真的不知道如何從selected.segmentedIndex
創建變量,所以我從另一個地方復制了一個方法。
typedef NS_ENUM(int, tipoServidor) {
SERVIDOR_ARG = 1,
SERVIDOR_EU = 2,
SERVIDOR_US = 3};
@property (nonatomic) tipoServidor servidorType;
<Another file>
if (self.persistentSettings.servidorType == SERVIDOR_ARG){
self.servidorControl.selectedSegmentIndex= 0;
} else if (self.persistentSettings.servidorType == SERVIDOR_EU) {
self.servidorControl.selectedSegmentIndex= 1;
} else if (self.persistentSettings.servidorType == SERVIDOR_US) {
self.servidorControl.selectedSegmentIndex = 2;}
<Another file>
- (NSString *)servidorType {
AdSettings *settings = [[AdSettings alloc] init];
NSString *server = [settings servidorType];
問題是最后一行拋出此錯誤:
Implicit conversion of 'tipoServidor' (aka 'enum tipoServidor') to 'NSString *' is disallowed with ARC
如何使這項工作正確的方法?
非常感謝你
問題是最后一行拋出此錯誤:ARC不允許將
tipoServidor
(又名enum tipoServidor
)隱式轉換為NSString *
是否使用ARC, enum
不是NSString
,所以您不能這樣做。 為了處理它,可以定義一個代表您的enum
值的字符串數組,或者編寫一個執行映射的小函數,例如:
NSString *DescriptionOfServidor(tipoServidor e) {
switch (e) {
case SERVIDOR_ARG: return @"SERVIDOR_ARG";
case SERVIDOR_EU: return @"SERVIDOR_EU";
case SERVIDOR_US: return @"SERVIDOR_US";
}
return nil;
}
現在您需要的只是此調用:
NSString *server = DescriptionOfServidor([settings servidorType]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.