【问题标题】:Swift like structure in Objective C [duplicate]Objective C中的类似Swift的结构[重复]
【发布时间】:2017-05-11 13:19:54
【问题描述】:

我已经在 swift 中创建了一个结构,我想创建并使用与 Objective c 相同的结构。

Constant.Swift

struct Segues
{
    static let SignUpToSignIn = "SignUpToSignIn"
    static let SingInToForgotPassword = "SingInToForgotPassword"
    static let MatchesToProfile = "MatchesToProfile"
}

ViewController.swift

self.performSegue(withIdentifier: Segues.MatchesToProfile, sender: nil)

我现在用 swift 创建了上面的结构,请帮我用 Objective C 做同样的事情。我已经尝试过,但我找不到可以用 Objective-C 结构完成的方法。

是否可以使用结构?或者还有其他方法可以实现。

提前致谢!

【问题讨论】:

  • 作为旁注,在这种情况下,您最好使用enums,不要使用structs
  • 方法的数量..如果您正在处理常量,您可以使用枚举、#define pragma、plist 等

标签: ios objective-c swift struct structure


【解决方案1】:

编辑:请参阅 Martin R 在他对 OP 的评论中的链接以获得一个很好的解决方案。

我能想到的最简单的方法是创建一个只使用类方法(没有实例变量或方法)的类。

@interface Segues : NSObject

+ (NSString *)signUpToSignIn;
+ (NSString *)signInToForgotPassword;
+ (NSString *)matchesToProfile;

@end

在代码中使用它们如下所示:

[self performSegueWithIdentifier:[Segues signUpToSignIn] sender: nil];

更简单的替代方法是使用以Segue 开头的常量。这需要很少的代码,但您会丢失一个类为您提供的 Segues 命名空间。

// In a .h file
extern NSString *const SeguesSignUpToSignIn;
extern NSString *const SeguesSignInToForgotPassword;
extern NSString *const SeguesMatchesToProfile;

// In a .m file
NSString *const SeguesSignUpToSignIn = @"SignUpToSignIn";
// copy for the others

// Usage
[self performSegueWithIdentifier:SeguesSignUpToSignIn];

还有其他一些使用枚举的替代方法,以及一些将枚举转换为字符串值或使用 C 结构的方法,但这些工作量更大,代码也更多,收获甚微。

【讨论】:

  • 正是为了一件小事,我必须做更多的代码。而你的答案仍然有更多的代码来获得 segue identifire。感谢您的帮助:)
猜你喜欢
  • 1970-01-01
  • 2016-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-20
  • 2010-10-07
  • 1970-01-01
相关资源
最近更新 更多