在Apple有关与C API交互的文档中,他们描述了NS_ENUM标记的C样式枚举被导入为Swift枚举的方式。 这是有道理的,由于Swift枚举容易提供enum值types,很容易看到如何创build自己的。 更进一步说,这是关于NS_OPTIONS标记的C风格选项的说明: Swift也导入标有NS_OPTIONSmacros的选项。 尽pipe选项的行为与导入的枚举类似,但选项也可以支持一些按位操作,例如& , | , ~ 。 在Objective-C中,表示一个用常量零( 0 )设置的空白选项。 在Swift中,使用nil来表示没有任何选项。 鉴于在Swift中没有options值types,我们如何创build一个C样式选项variables来处理?
我通过单击button将用户转到一个页面。 这个页面是一个UITableViewController 。 现在,如果用户点击一个单元格,我想推他回到前一页。 我想过像self.performSegue("back")….这样的东西,但这似乎是一个坏主意。 什么是正确的方法来做到这一点?
我想使用Swift代码在我的应用程序中正确定位项目,无论屏幕大小是多less。 例如,如果我想要一个button为屏幕宽度的75%,我可以做一些像(screenWidth * .75)这样的button宽度。 我发现这可以通过做Objective-C来确定 CGFloat screenWidth = screenSize.width; CGFloat screenHeight = screenSize.height; 不幸的是,我不确定如何将其转换为Swift。 有没有人有一个想法? 谢谢!
我怎样才能从第一个ViewController或一个特定的ViewController在swift中隐藏导航栏? 我在viewDidLoad()使用了下面的代码: override func viewDidLoad() { super.viewDidLoad() self.navigationController?.isNavigationBarHidden = true } 也在viewWillAppear : override func viewWillAppear(animated: Bool) { self.navigationController?.isNavigationBarHidden = true } 这两种方法都隐藏了所有ViewController的导航控制器。
我试着去理解swift 2中的新的error handling事情。下面是我所做的:我首先声明了一个错误枚举: enum SandwichError: ErrorType { case NotMe case DoItYourself } 然后我声明了一个引发错误的方法(不是一个例外的人,这是一个错误)。 这是该方法: func makeMeSandwich(names: [String: String]) throws -> String { guard let sandwich = names["sandwich"] else { throw SandwichError.NotMe } return sandwich } 问题来自主叫方。 这是调用这个方法的代码: let kitchen = ["sandwich": "ready", "breakfeast": "not ready"] do { let sandwich = try makeMeSandwich(kitchen) print("i eat it […]
如何在iOS的Swift框架中导入CommonCrypto? 我明白如何在Swift应用程序中使用CommonCrypto:将#import <CommonCrypto/CommonCrypto.h>到桥接标头。 但是,Swift框架不支持桥头。 该文件说: 您可以导入具有纯粹的Objective-C代码库,纯Swift代码库或混合语言代码库的外部框架。 无论框架是用单一语言编写还是包含来自两种语言的文件,导入外部框架的过程都是相同的。 当您导入外部框架时,请确保您要导入的框架的“定义模块”构build设置设置为“是”。 您可以使用以下语法将框架导入到不同目标中的任何Swift文件: import FrameworkName 不幸的是,导入CommonCrypto不起作用。 将#import <CommonCrypto/CommonCrypto.h>到伞头中也没有。
我怎样才能在Apple的新语言Swift中取消设置数组中的元素? 这是一些代码: let animals = ["cats", "dogs", "chimps", "moose"] 元素animals[2]如何从arrays中移除?
我正在尝试检查一个文本字段的变化,相当于用于textView的function – textViewDidChange到目前为止,我已经这样做了: func textFieldDidBeginEditing(textField: UITextField) { if self.status.text == "" && self.username.text == "" { self.topRightButton.enabled = false } else { self.topRightButton.enabled = true } } 哪种types的作品,但topRightButton文本字段被按下, topRightButton被启用了,我希望只有当文本被input时才能使用它。
在Objective-C中,可以在其类中添加一个description方法来帮助debugging: @implementation MyClass – (NSString *)description { return [NSString stringWithFormat:@"<%@: %p, foo = %@>", [self class], foo _foo]; } @end 然后在debugging器中,你可以这样做: po fooClass <MyClass: 0x12938004, foo = "bar"> Swift中的等价物是什么? Swift的REPL输出可能会有所帮助: 1> class MyClass { let foo = 42 } 2> 3> let x = MyClass() x: MyClass = { foo = 42 } 但我想覆盖这个行为打印到控制台: 4> […]
我希望能够得到我的iOS项目/应用程序的当前版本作为一个NSString对象,而不必在某个文件中定义一个常量。 我不想在两个地方更改我的版本值。 当我在项目目标摘要中碰撞我的版本时,需要更新该值。