2016-05-18 69 views
0

以下情況屬實。NS_ENUM作爲帶「@」的NSNumber

NSNumber *a= @90; 

但是,如果我有NSInteger的一個NS_ENUM和使用前綴「@」它說

typedef NS_ENUM(NSInteger,Names){John=1}; 

NSNumber *a= @John; 

回答

4

「程序中的意外‘@’」你需要用括號中的John

NSNumber *a = @(John); 

如果值是不是一個實際的數字文本中,必須使用與@括號。當然,即使它是數字文字,也可以使用括號。

所有有效:

NSNumber *a = @4; 
NSNumber *a = @3.14; 
NSNumber *a = @-6; 
NSNumber *a = @(4); 
NSNumber *a = @(4+5*3); 
NSInteger magic = 42; 
NSNumber *a = @(magic); 
NSNumber *a = @([@"42" integerValue]);