草庐IT

objective-c - 在 Objc 中定义的枚举 > 在 Swift 中声明 > 在 Objc 中使用

我有一个情况。如果有人对此有解决方案,我将不胜感激我有一个objCenum说Abc我在一个swift类中将其声明为MySwiftClass.swiftvarabc:Abc!我在另一个ObjC类(myObjC.m文件)中创建了MySwiftClass(mySwiftClass)的实例在myObjC.m中,我正在尝试以mySwiftClass.abc的形式访问枚举Abc。这会抛出一个错误——“在MySwiftClass*类型的对象上找不到属性‘abc’”。基本上,枚举不会作为属性添加到“ProjectName-Swift.h”文件中。我认为正在发生的事情是,当我在Swift类中声明ObjC

swift - 如何在 Swift 的数组中存储 2 种类型的 CGPath 定义

我想要一个数组来存储生成四边形和三次边曲线所需的数据。为此,我做了以下工作:定义了具有属性start、end、cp1和cp2的CubicCurve结构定义了具有属性start、end和cp的QuadCurve结构定义了一个名为Path的枚举,其中cubicCurve具有CubicCurve关联值,quadCurve具有QuadCurve关联值。定义了一个Path类型的数组[Path]()我定义了一个CubicCurve但不能将它添加到数组中,因为数组是Path类型:structCubicCurve{varstart:CGPointvarend:CGPointvarcp1:CGPoint

swift - 更改枚举 Swift 的关联值

如何更改枚举的特定关联值enumOrigin{casesearch(searchTerm:String,filtered:Bool)casecategory(categoryName:String,subcategoryName:String)}@objcclassGameSession:NSObject{vargameOrigin:Origin?...@objcfuncsetIsSearchFiltered(filtered:Bool){if(){self.gameOrigin=}}....}Thisquestionwithanswer,不幸的是,最近没有帮助我。

ios - Swift 枚举和 CBCharacteristicProperties

在使用CoreBluetooth框架将设备设置为外设管理器时,我在Swift处理枚举的方式上遇到了困难。具体来说,CBMutableCharacteristic的初始化程序为properties参数采用了一个enum:init!(typeUUID:CBUUID!,properties:CBCharacteristicProperties,value:NSData!,permissions:CBAttributePermissions)CBCharacteristicProperties是一个Int支持的枚举。如果使用ObjectiveC,初始化程序将通过使用按位或|运算符接受prope

使用具有通用关联类型的枚举的 Swift 协议(protocol)

我正在尝试创建一个在swift中使用通用枚举的协议(protocol)。编译器抛出此错误:Protocolcanonlybeusedasagenericconstraintbecauseithasassociatedtyperequirements截取的短代码:enumGenericEnum{caseUnassociatedcaseAssociated(T)}protocolAssociatedProtocol{typealiasAssociatedTypefuncfoo()->GenericEnum}letbar=[AssociatedProtocol]()你可以找到更长的例子her

swift - 比较嵌套枚举

如果我有varcurrentState:TransformState=.DefaultenumTransformState{caseDefaultcaseError(ErrorState)enumErrorState{caseCustomcaseDefault}}varstate=TransformState.Error(.Custom)如何检查state==currentState? 最佳答案 你只需要为TransformState实现EquatableTransformState.ErrorState免费获取它,因此您可以在您的

swift - 如何使用单个 case 语句检查枚举值及其关联的枚举值?

请看下面的switch语句。我正在寻找一种更快捷的方法来执行测试;像这样的东西:caselet.b(other)where.x=other//Thisdoesnotcompile这可能吗?enumMyEnum{caseacaseb(MyOtherEnum)}enumMyOtherEnum{casexcasey}funccheck(value:MyEnum){switchvalue{caselet.b(other):ifcase.x=other{print("Gotit!")}default:break}} 最佳答案 如果您只对案例M

swift - 如何为枚举关联值实现快速下标 setter

试图让以下工作:enumFoobar{casevalues([Int])casesingleThing(Double)subscript(index:Int)->Int?{get{switchself{case.values(letnumbers):returnnumbers[index]default:returnnil}}set{switchself{case.values(letnumbers):numbers[index]=newValue!default:break}}}}以上代码无法编译。当我用let分配给它时,它提示我正在更新numbers。所以我尝试用var替换let。

调用方法的 Swift 枚举

假设我有一个这样的枚举:enumItemType{caseTypeOnecaseTypeTwocaseTypeThree}然后我有一个方法可以根据所选的ItemType调用另一个方法:funcgetItem(withType:ItemType){switchwithType{caseTypeOne:getTypeOneItem()caseTypeTwo:getTypeTwoItem()caseTypeThree:getTypeThreeItem()}}我只是想知道是否有更好的写法,如果我有很多ItemTypesswitch语句会变得非常困惑。不确定是否可能,但也许是一个直接调用方法的e

ios - 在数组中查找枚举类型

如果我有这个枚举:enumTestEnum{casetypeAcasetypeB(Int)}和这个数组:lettestArray=[TestEnum.typeB(1),.typeA,.typeB(3)]是否有比以下更简单的方法来查找某个项目是否包含在该数组中:iftestArray.contains(where:{ifcase.typeA=$0{returntrue};returnfalse}){print("contained")}else{print("notfound")} 最佳答案 为了使其更具可读性,您可以像这样向您的枚举