当前位置: 首页 > 面试题库 >

如何将多个枚举值作为函数参数传递

孙夕
2023-03-14
问题内容

我该怎么做-在swift中传递两个NSStringDrawing选项作为函数参数:

CGRect boundingRect = [string boundingRectWithSize:CGSizeMake(280.0, NSIntegerMax)
                                                      options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
                                                   attributes:options context:nil];

问题答案:

编辑:在 Swift 3.0中

let options: NSStringDrawingOptions = [.usesLineFragmentOrigin, .usesFontLeading]

编辑: 这就是您将在Swift 2.0中使用选项枚举的方式

let options: NSStringDrawingOptions = [.UsesLineFragmentOrigin, .UsesFontLeading]

编辑: 此问题 已在iOS 8.3 SDK Beta
1(12F5027d)中得到解决

修改后的NSStringDrawingOptions[struct]

  • 从: enum NSStringDrawingOptions : Int
  • 至: struct NSStringDrawingOptions : RawOptionSetType

您现在可以编写:

let options : NSStringDrawingOptions = .UsesLineFragmentOrigin | .UsesFontLeading

经过一番研究和@Anton Tcholakov的“评论”:

  1. 如果您以OS X 10.10为目标,这是这样做的简单方法:

    let size = CGSize(width: 280, height: Int.max)
    

    let options : NSStringDrawingOptions = .UsesLineFragmentOrigin | .UsesFontLeading

    let boundingRect = string.bridgeToObjectiveC().boundingRectWithSize(size, options: options, attributes: attributes, context: nil)

  2. 但是,在iOS 8 SDK(在当前种子中)中,存在一个错误,该错误NSStringDrawingOptions将移植为Swift enum : Int而不是struct : RawOptionSet。您应该向Apple发送错误报告,说明此严重问题。



 类似资料:
  • 我写了以下方法 我如何将不同的枚举类型传递给第二个参数?我知道我不能创建枚举的实例,但初始化枚举意味着我将传递一个值,而不是整个初始化的枚举,如下所示...其他枚举也将传递给相同的方法以实现组合细节

  • 假设我们有python中的函数: 虽然我可能会将传递给A,但我正在寻找一种优雅的方法来传递类似于的东西来执行。 我现在看到的唯一方法是发送一个函数列表并按顺序应用它们。有没有更好的办法?

  • 最近我在使用c语言时遇到了一些问题,基本上是这样的: 在一个函数(比如intmain)中,我声明了一个变量Y=5,我有一个lambda函数,它接收一个值并将Y相加; 我的问题是:我需要将这个lambda函数传递给一个已经存在的函数,这样它就可以在另一个函数内部调用。 我尝试了几件事,但没有一个像我预期的那样工作(有些甚至不起作用): 另一个问题是我不能改变我的receives函数签名,因为代码的剩

  • 问题内容: 在Java中,如何将一个函数作为另一个函数的参数传递? 问题答案: Java 8及以上 如果你的类或接口只有一个抽象方法(有时称为SAM type),则使用Java 8+ lambda表达式,例如: 然后可以在使用MyInterface的任何地方替换lambda表达式: 例如,你可以非常快速地创建一个新线程: 并使用方法引用语法使其更加清晰: 如果没有 lambda表达式,则最后两个示

  • 问题内容: 我有一个通用函数,该函数调用Web服务并将JSON响应序列化回一个对象。 我要完成的是等效于此Java代码 我要完成的方法签名正确吗? 更具体地说,将参数类型指定为正确的做法是正确的吗? 调用该方法时,我将其作为returningClass值传递,但是出现编译 错误“无法将表达式的类型’()’转换为’String’类型” CastDAO.invokeService(“test”, wi

  • 我正试图将dataframe列作为参数传递 但是得到错误 :33:错误:类型不匹配; 找到:org.apache.spark.sql.column 必需:int val df_new=df.withcolumn(“age_category”,ageclassification.agecategory(df(“age”))