Tag: 迅速的

如何通过忽略它的关联值在Swift中比较枚举和关联的值?

阅读后如何testing与相关值的Swift枚举的平等 ,我实现了以下枚举: enum CardRank { case Number(Int) case Jack case Queen case King case Ace } func ==(a: CardRank, b: CardRank) -> Bool { switch (a, b) { case (.Number(let a), .Number(let b)) where a == b: return true case (.Jack, .Jack): return true case (.Queen, .Queen): return true case (.King, .King): return true case […]

Swift是否实现了尾部呼叫优化? 并在相互recursion的情况下?

特别是如果我有以下代码: func sum(n: Int, acc: Int) -> Int { if n == 0 { return acc } else { return sum(n – 1, acc + n) } } 请问Swift编译器优化它到一个循环? 在下面更有趣的情况下呢? func isOdd(n: Int) -> Bool { if n == 0 { return false; } else { return isEven(n – 1) } } func isEven(n: Int) […]

Swift扩展的例子

我原本想知道如何做出这样的事情 UIColor.myCustomGreen 这样我就可以定义自己的颜色并在整个应用程序中使用它们。 我以前学习过扩展,我认为我可以用它来解决我的问题,但我不记得如何设置扩展。 在写这篇文章的时候在Google上search“Swift扩展”导致了文档 , 一些长篇教程和一个相当无益的堆栈溢出问题 。 所以答案就在那里,但需要通过文档和教程进行一些挖掘。 我决定写这个问题和下面的答案,以添加一些更好的search关键字堆栈溢出,并提供如何扩展设置的快速回顾。 具体而言,我想知道: 扩展名驻留在哪里(文件和命名约定)? 什么是扩展语法? 什么是几个简单的常用示例?

Swift中的状态栏高度

我怎样才能以编程方式在Swift中获得状态栏的高度? 在Objective-C中,就像这样: [UIApplication sharedApplication].statusBarFrame.size.height.

如何在Swift语言的字典中添加不同的types?

Swift只允许一个字典包含一个types。 这里是从Swift书中取得的定义: 字典是存储相同types的多个值的容器 […] 它们不同于Objective-C的NSDictionary和NSMutableDictionary类,它们可以使用任何types的对象作为它们的键和值,并且不提供关于这些对象的性质的任何信息。 如果是这样的话,我们将如何创build嵌套字典? 想象一下,我们有一个plist ,它包含String,Array和Dictionary项目。 如果我被允许只持有相同types的项目(string,数组等),那么我将如何使用存储在plist中的不同types的项目? 我如何在Swift中的不同types的字典?

在Swift中整理一个CGFloat

我怎么能在Swift中find一个CGFloat? 我已经尝试过ceil(CDouble(myCGFloat))但只适用于iPad Air&iPhone 5S。 当在另一个模拟设备上运行时,我得到一个错误,说'NSNumber' is not a subtype of 'CGFloat'

如何打开地图应用程序以swift坐标编程方式?

我有我想要打开我的地图应用程序的经度和纬度。 我从这里试过这个代码。 func goToMap(){ var lat1 : NSString = self.venueLat var lng1 : NSString = self.venueLng var latitude:CLLocationDegrees = lat1.doubleValue var longitude:CLLocationDegrees = lng1.doubleValue var coordinate = CLLocationCoordinate2DMake(latitude, longitude) var placemark : MKPlacemark = MKPlacemark(coordinate: coordinate, addressDictionary:nil) var mapItem:MKMapItem = MKMapItem(placemark: placemark) mapItem.name = "Target location" let launchOptions:NSDictionary = NSDictionary(object: MKLaunchOptionsDirectionsModeDriving, forKey: MKLaunchOptionsDirectionsModeKey) var currentLocationMapItem:MKMapItem […]

如果让逻辑AND运算符&&使用Swift &&

我们知道我们可以使用if let语句作为速记来检查可选的零,然后解包。 不过,我想用AND运算符&&将其与另一个expression式结合起来。 所以,例如,在这里,我做可选的链接解开和可选地向下我的rootViewController tabBarController。 而不是嵌套if语句,我想结合起来。 if let tabBarController = window!.rootViewController as? UITabBarController { if tabBarController.viewControllers.count > 0 { println("do stuff") } } 综合给予: if let tabBarController = window!.rootViewController as? UITabBarController && tabBarController.viewControllers.count > 0 { println("do stuff") } } 上面给出了编译错误使用未parsing的标识符“tabBarController” 简化: if let tabBarController = window!.rootViewController as? UITabBarController && true { println("do stuff") } […]

试试! 试试? 有什么区别,什么时候使用每个?

在Swift 2.0中 ,Apple引入了一种处理错误的新方法(do-try-catch)。 而且几天前在Beta 6中引入了一个更新的关键字( try? )。 另外,知道我可以使用try! 。 3个关键字之间有什么区别,以及每个关键字的使用时间?

在Swift中从userInfo获取键盘大小

我一直试图添加一些代码来移动我的视图,当键盘出现,但是,我有问题试图将Objective-C的例子转换成Swift。 我已经取得了一些进展,但我陷入了一个特定的路线。 这些是我一直在关注的两个教程/问题: 如何向上移动UIViewController的内容,使用Swift键盘显示 http://www.ioscreator.com/tutorials/move-view-when-keyboard-appears 这是我现在的代码: override func viewWillAppear(animated: Bool) { NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil) NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:", name: UIKeyboardWillHideNotification, object: nil) } override func viewWillDisappear(animated: Bool) { NSNotificationCenter.defaultCenter().removeObserver(self) } func keyboardWillShow(notification: NSNotification) { var keyboardSize = notification.userInfo(valueForKey(UIKeyboardFrameBeginUserInfoKey)) UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0) let frame = self.budgetEntryView.frame frame.origin.y = […]