请帮忙!我正在制作iPhone应用程序,而且我正在尝试使用' typedef enum'特征。我听说这让我可以轻松制作出自己类型的'所以说。我尝试使用它,但我得到错误,但代码看起来正确。我使用这个错了吗?
.h
中的代码typedef enum CoinTypes
{
Bitcoin,
Litecoin,
Dogecoin
} CoinType;
<。> .m中的代码,错误来自的行有一个&#39;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&#右边的符号
- (void)checkCoin
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([[defaults objectForKey:@"AboutCoin"] isEqualToString:@"Bitcoins"])
{
// Bitcoins was selected
CoinType = Bitcoin; <<
}
else if ([[defaults objectForKey:@"AboutCoin"] isEqualToString:@"Litecoins"])
{
// Litecoins was selected
CoinType = Litecoin; <<
}
else
{
// Dogecoins was selected
CoinType = Dogecoin; <<
}
NSLog(@"%@", [defaults objectForKey:@"AboutCoin"]);
}
我得到的错误是:&#39; 预期的标识符或&#39;(&#39; &#39;
答案 0 :(得分:2)
CoinType = Litecoin;
您错过了变量名称。 CoinType
是类型。尝试:
CoinType coinType = LiteCoin;
答案 1 :(得分:1)
您需要创建CoinType类型的变量:
- (void)checkCoin
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
CoinType type;
if ([[defaults objectForKey:@"AboutCoin"] isEqualToString:@"Bitcoins"])
{
// Bitcoins was selected
type = Bitcoin;
}
//etc.
}
答案 2 :(得分:1)
如接受的答案中所述,需要声明变量名称。
另外考虑使用Apples NS_ENUM
宏:
typedef NS_ENUM(NSInteger, CoinType) {
Bitcoin,
Litecoin,
Dogecoin
};
这个宏有助于定义名称(此处为CoinType)和类型(此处和通常为NSInteger)。它提示编译器进行类型检查。
进一步阅读:
答案 3 :(得分:0)
typedef主要用于创建现有数据类型的同义词。
typedef
的基本语法是:
typedef existing_type new_type ;
所以当你写得像:
typedef enum CoinTypes {..} CoinType;
CoinType
代表enum CoinTypes
。
要解决此问题,请通过以下任一方式声明enum
。
解决方案1:
// Create a global variable
typedef enum CoinTypes
{
Bitcoin,
Litecoin,
Dogecoin
} CoinTypes;
CoinTypes CoinType;
解决方案2:
// Remove typedef
enum CoinTypes
{
Bitcoin,
Litecoin,
Dogecoin
} CoinType;