预期标识符或 '(' 使用 typedef enum Objective-C



请帮忙!我在做一个iPhone应用,我在尝试使用typedef enum功能。我听说这让我可以很容易地创造自己的"类型"。我尝试使用它,但我得到错误,但代码看起来是正确的。我用错了吗?

.h 中的代码
typedef enum CoinTypes
{
  Bitcoin,
  Litecoin,
  Dogecoin
} CoinType;

代码在。m中,错误来自的行在

右边有一个'<<'符号。
- (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"]);
}

我得到的错误是:'期望的标识符或'(''

CoinType = Litecoin;

你缺少一个变量名。类型为CoinType。试一试:

CoinType coinType = LiteCoin;

您需要创建一个类型为CoinType的变量:

- (void)checkCoin
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    CoinType type;
    if ([[defaults objectForKey:@"AboutCoin"] isEqualToString:@"Bitcoins"])
    {
        // Bitcoins was selected
        type = Bitcoin;
    }
    //etc.
}

正如在接受的答案中提到的,需要声明一个变量名。

另外考虑使用apple的NS_ENUM宏:

typedef NS_ENUM(NSInteger, CoinType) {
    Bitcoin,
    Litecoin,
    Dogecoin
}; 
这个宏帮助定义名称(这里是CoinType)和类型(这里通常是NSInteger)。它提示编译器进行类型检查。

    https://developer.apple.com/library/ios/releasenotes/ObjectiveC/ModernizationObjC/AdoptingModernObjective-C/AdoptingModernObjective-C.html
  • http://nshipster.com/ns_enum-ns_options/

typepedef主要用于创建现有数据类型的同义词。

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;

相关内容

  • 没有找到相关文章

最新更新