Dönüştürmek objective-c typedef dize karşılığı
Bir typedef benim ilan var varsayarak .gibi h dosyası:
typedef enum {
JSON,
XML,
Atom,
RSS
} FormatType;
Bir dize için typedef sayısal değeri dönüştüren bir fonksiyon inşa etmek istiyorum. Mesajı [self toString:JSON] gönderilmiş olup, geri dönüş, örneğin,''. JSON
İşlevi bu gibi bir şey olacaktır
-(NSString *) toString:(FormatType)formatType {
//need help here
return [];
}
Eğer bu sözdizimi çalışırsam bu arada
[self toString:FormatType.JSON];
yöntem typedef değer vermek, bir hata alıyorum. Neyi kaçırıyorum?
CEVAP
Bunu kolayca yapabilirsin. C ve Objective-C, çeteleler gerçekten sadece tamsayı sabitleri övmek. İsimleri kendiniz (ya da bazı basit istismarı ile) bir tablo oluşturmak gerekir. Örneğin:
// In a header file
typedef enum FormatType : NSString {
JSON,
XML,
Atom,
RSS
} FormatType;
extern NSString * const FormatType_toString[];
// In a source file
// initialize arrays with explicit indices to make sure
// the string match the enums properly
NSString * const FormatType_toString[] = {
[JSON] = @"JSON",
[XML] = @"XML",
[Atom] = @"Atom",
[RSS] = @"RSS"
};
...
// To convert enum to string:
NSString *str = FormatType_toString[theEnumValue];
Bu yaklaşımın bir tehlike anında hiç numaralama değiştirin, adları bir dizi değiştirmek için hatırlamak zorunda. Bazı basit istismarı ile bu sorunu çözebilirsiniz, ama zor ve çirkin.

Objective-C ve Swift Base64 dize Uİİma...
Objective-C mutlak değer dönüştürmek...
Objective-c iPhone yüzde bir dize kodl...
Daha zarif bir ÅŸekilde bu kodu daha Ja...
Bayt içine Java Dize dönüştürmek için ...