草庐IT

objective-c - 枚举 Objective-C 和 Swift 之间的互操作性

我正在将项目的一部分移植到Swift上,发现枚举不可互操作。此外,任何使用枚举的属性和函数都不会暴露给objective-c,因为枚举在objective-c中不具有等效性。即使枚举是NSInteger类型,枚举仍然不会暴露。如何解决这个互操作性问题,使swift类尽可能干净? 最佳答案 Swift2:在Swift2中,您现在可以将枚举公开给Objective-C。使枚举成为非泛型,从简单的数字类型(如Int)继承,并且不使用关联值。然后它会出现在Objective-C中,枚举的名称预先附加到案例中,因此它看起来像一个Objecti

swift - 嵌套枚举以允许多个时间范围

我希望实现某种风格的枚举语法/功能,但我不确定如何实现它。目前我有以下内容:internalenumTimeframe:Equatable{//MARK:-Casescasehour(count:Int)caseday(count:Int)caseweek(count:Int)casemonth(count:Int)caseyear(count:Int)caseallcaseexact(date:Date)caseunspecified}除非需要,否则我想消除计数关联值。例如:letoneDayTimeframe:Timeframe=.daylettwoDayTimeframe:Tim

swift - 具有相同案例名称且具有不同类型关联值的枚举

编译以下Swift代码:enumGraphDataSource{casearray(data:[Double],start:Double?,step:Double?)casepairs(XYValues:[Double:Double])casepairs(dateValues:[Date:Double])casefunction((Double)->Double?)funclocalizedName()->String{//TODO:CreatelocalizablestringsreturnNSLocalizedString(Mirror(reflecting:self).child

Swift:使用符合相同协议(protocol)的嵌套枚举案例的代码更少

我尝试在以下场景中编写更少的代码:我有这个Queryable协议(protocol)和一个Parameter枚举:protocolQueryable{varurlQuery:URLQueryItem{get}}enumPaginationParameter:Queryable{casepage(Int)casepageSize(Int)varqueryItem:URLQueryItem{switchself{case.page(letpage):returnURLQueryItem(name:"page",value:page.description)case.pageSize(let

swift - 对于 swift 中的错误,我应该使用枚举还是类层次结构?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭7年前。Improvethisquestion在Swift2中,任何符合ErrorType协议(protocol)的类型都可以被抛出和捕获。对我来说,拥有一个通用的错误层次结构并在多个地方重复使用它是有意义的。但是,Apple文档似乎促使开发人员使用枚举来处理错误。例如,这个层次结构可以让我在不知道它的确切子类型的情况下捕获并处理一个常见的ValidationError。这也将允许应用程序的不同部分扩展ValidationError。

Swift 枚举不等式

我习惯了能够治疗enums作为数值,因此使用像>这样的运算符,等。对于大多数枚举用途,这可能不是那么必要,但有一种情况是这样的:@objcpublicenumMyState:Int{caseLoading=0caseLoadedcaseResolvedcaseProcessed}我希望能够获取一个实例变量并检查它:varstate:MyState=...ifstate>.Loaded{...}但是Swift提示它不知道该做什么。我已将枚举声明为Int。是我比较rawValue的唯一选择秒?我希望避免这种情况,因为它会变得非常丑陋,而且Swiftsooo会自行关闭。

ios - 表达式类型不明确,没有更多上下文(枚举)

enum的一个小问题。publicenumLHActivityTypeID:String{caseRun="16"caseBike="41"}尝试在其他文件中使用它(是的,我的枚举是全局的):if(activity.activity_type?.id==.Bike){self?.allItems.append(activity)}Error>Typeofexpressionisambiguouswithoutmorecontext我知道编译器需要更多关于枚举的信息,但我找不到如何做到这一点,我已经尝试了很多东西并阅读了一些其他帖子。谢谢你的帮助 最佳答案

ios - 为什么delegate.respondsToSelector(Selector ("testEnum:"))这段代码用swift语言会返回false?

我前几天是从Objective-C开始写Swift语言的,在项目中我遇到了一个问题。这个问题是在使用respondsToSelector("testEnum:")函数检查是否实现了testEnum的功能时:,如果param是这样,会返回false,我试过其他类型,都会返回true,不知道是什么原因,看下面的代码,帮我解决一下,非常感谢!enumTestEnum{caseAcaseBcaseC}protocolTestAProtocol:NSObjectProtocol{functestEnum(testEnum:TestEnum);functestInt(testInt:Int);}c

与枚举和可选元组关联值的 Swift 模式匹配

我目前正在使用Alamofire,我使用枚举来描述我按照自述文件中的建议使用的API。端点表示如下:publicenumAPI{caseGetStops(stopCode:String?)caseGetPhysicalStopscaseGetLinesColorscaseGetNextDepartures(stopCode:String,departureCode:String?,linesCode:String?,destinationsCode:String?)}可选参数是互斥的:publicvarURLRequest:NSMutableURLRequest{letresult:(

swift 3.0 : What is the neatest way to tackle this scenario with enums?

比如说,我有一堆对象。我想根据形状或颜色过滤它们。形状可以是正方形或三角形enumShape{caseSquare,Triangle}颜色可能是红色或绿色enumColor{caseRed,Green}我想要的是一个如下的方法,它接受一个过滤器数组,可以是Shape或Color,或者两者兼而有之。funcapply(_filters:[Filter]){forfilterinfilters{ifit'saShapefilter,applythatifit'saColorfilter,applythat}}然后我可以按如下方式填充数组并将其传递给上面的方法:letfilters=[Sha