Questions tagged «swift»

Swift是Apple Inc.针对其平台和Linux开发的一种安全,快速且具有表现力的通用编程语言。Swift是开源的。仅将标记用于有关语言功能或在Swift中需要代码的问题。将标签[ios],[ipados],[macos],[watch-os],[tvos],[cocoa-touch]和[cocoa]用于有关平台或框架的(语言不可知)问题。

4
Swift中的多个类型约束
假设我有以下协议: protocol SomeProtocol { } protocol SomeOtherProtocol { } 现在,如果我想要一个采用通用类型的函数,但是该类型必须符合SomeProtocol我的要求,则可以执行以下操作: func someFunc<T: SomeProtocol>(arg: T) { // do stuff } 但是,有没有一种方法可以为多个协议添加类型约束? func bothFunc<T: SomeProtocol | SomeOtherProtocol>(arg: T) { } 类似的事情使用逗号,但是在这种情况下,它将开始不同类型的声明。这是我尝试过的。 <T: SomeProtocol | SomeOtherProtocol> <T: SomeProtocol , SomeOtherProtocol> <T: SomeProtocol : SomeOtherProtocol>
133 swift 

5
Swift扩展中的重写方法
我倾向于只将必需品(存储的属性,初始化器)放入我的类定义中,然后将其他所有内容移动到它们自己的extension类中,就像extension每个逻辑块一样,将其分组// MARK:。 例如,对于一个UIView子类,我将获得一个与布局相关的东西的扩展,一个用于订阅和处理事件的扩展,等等。在这些扩展中,我不可避免地必须重写一些UIKit方法,例如layoutSubviews。直到今天,我从未注意到这种方法有任何问题。 以此类的类层次结构为例: public class C: NSObject { public func method() { print("C") } } public class B: C { } extension B { override public func method() { print("B") } } public class A: B { } extension A { override public func method() { print("A") } } …


18
如何在Swift中存储属性,就像在Objective-C中一样?
我将应用程序从Objective-C切换到Swift,我将其分为具有存储属性的几个类别,例如: @interface UIView (MyCategory) - (void)alignToView:(UIView *)view alignment:(UIViewRelativeAlignment)alignment; - (UIView *)clone; @property (strong) PFObject *xo; @property (nonatomic) BOOL isAnimating; @end 由于Swift扩展不接受此类存储的属性,因此我不知道如何维护与Objc代码相同的结构。存储的属性对于我的应用程序确实非常重要,我相信Apple一定已经创建了一些解决方案来在Swift中实现。 正如jou所说,我正在寻找的实际上是使用关联的对象,所以我做了(在另一种情况下): import Foundation import QuartzCore import ObjectiveC extension CALayer { var shapeLayer: CAShapeLayer? { get { return objc_getAssociatedObject(self, "shapeLayer") as? CAShapeLayer } set(newValue) { objc_setAssociatedObject(self, "shapeLayer", newValue, UInt(OBJC_ASSOCIATION_RETAIN)) } …

11
stringByAppendingPathComponent不可用
我的应用程序在Instagram上共享照片,为此,首先将其保存在一个临时目录中: let writePath = NSTemporaryDirectory().stringByAppendingPathComponent("instagram.igo") 它正在工作Swift 1.2,但不起作用Swift 2.0。 给定的错误消息是: stringByAppendingPathComponent不可用:在NSURL上使用URLByAppendingPathComponent。
132 ios  swift  swift2 

6
为什么在Swift中甚至需要便捷关键字?
由于Swift支持方法和初始化方法的重载,因此您可以将多个方法init并排放置,并使用您认为方便的方法: class Person { var name:String init(name: String) { self.name = name } init() { self.name = "John" } } 那么,为什么convenience关键字甚至存在呢?是什么使以下内容显着改善? class Person { var name:String init(name: String) { self.name = name } convenience init() { self.init(name: "John") } }


17
在Swift中测量经过时间
我们如何衡量在Swift中运行一个函数所花费的时间?我试图以这种方式显示经过的时间:“经过的时间为.05秒”。看到在Java中,我们可以使用System.nanoTime(),Swift中有可用的等效方法来实现这一点吗? 请看一下示例程序: func isPrime(var number:Int) ->Bool { var i = 0; for i=2; i<number; i++ { if(number % i == 0 && i != 0) { return false; } } return true; } var number = 5915587277; if(isPrime(number)) { println("Prime number"); } else { println("NOT a prime number"); }


5
在Swift 4中,如何使用#selector()处理@objc推理弃用?
我正在尝试将项目的源代码从Swift 3转换为Swift4。Xcode给我的一个警告是关于选择器的信息。 例如,我使用常规选择器将目标添加到按钮,如下所示: button.addTarget(self, action: #selector(self.myAction), for: .touchUpInside) 这是显示的警告: “ #selector”的参数引用“ ViewController”中的实例方法“ myAction()”,该方法依赖于Swift 4中弃用的“ @objc”属性推断 添加“ @objc”以将该实例方法公开给Objective-C 现在,点击Fix错误消息会对我的功能执行此操作: // before func myAction() { /* ... */ } // after @objc func myAction() { /* ... */ } 我真的不想重命名所有功能以包括该@objc标记,并且我认为这不是必需的。 如何重写选择器以应对弃用? 相关问题: 不建议在Swift 4模式下使用Swift 3 @objc推论吗?
131 swift  xcode  swift4 



9
如何使用Swift播放本地视频?
我有一个简短的mp4视频文件,已将其添加到当前的Xcode6 Beta项目中。 我想在我的应用中播放视频。 经过数小时的搜索,我找不到任何远程帮助。有没有一种方法可以使用Swift来实现,还是必须使用Objective-C?我可以指出正确的方向吗?我不是唯一想知道这一点的人。


13
以编程方式获取导航栏的高度
我知道更多视图控制器(导航栏)的存在将UIView按其高度向下推。我也知道这个高度= 44px。我还发现,这种下推保持了[self.view].frame.origin.y = 0。 因此,除了将其设置为常数之外,如何确定此导航栏的高度? 或者,较短的版本,如何确定我的UIView显示在导航栏的顶部? 灯泡开始点亮。不幸的是,如下所述,我还没有发现纠正问题的统一方法。 我相信我的整个问题都围绕着我的自动调整大小掩码。我得出的结论是,无论是否使用UIWebView,都存在相同的症状。症状是,对于Portrait来说,一切都是桃红色的。对于Landscape,最底部的UIButton在TabBar后面弹出。 例如,在一个UIView上,我从上到下都有: UIView –既设置了弹簧(默认情况),也没有支柱 UIScrollView-如果我设置了两个弹簧,并清除了所有其他内容(如UIView),则UIButton会侵入其上方的对象。如果我清除了所有内容,则UIButton可以,但是最顶部的内容隐藏在StatusBar的后面。仅设置顶部的支柱,UIButton向下弹出在Tab栏的后面。 UILabel和UIImage垂直向下–顶部支撑杆设置,其他位置均可灵活使用 只是为了完成一些具有UIWebView的图片: UIWebView-支撑杆:顶部,左侧,右侧弹簧:两者 UIButton –没有设置,即到处都灵活 尽管我的灯泡昏暗,但似乎仍然充满希望。 请多多包涵,因为我需要的空间比简短回复的评论要多。 感谢您尝试了解我真正在钓鱼的目的... 1)每个UIViewController(一个TabBar应用)都有一个UIImage,一些文本以及其他内容。另一个共同点是底部的UIButton。在某些UIViewController上,我在UIButton上方有一个UIWebView。 因此,UIImage,文本等。UIWebView(在某些情况下)UIButton 以上所有内容都是一个UIScrollView。 2)对于具有UIWebView的用户,其autoresizingMask如下所示: — | — ^ | | | — | ←----→| — || | | V UIButton的遮罩没有设置,即到处都是灵活的 在我的-viewDidLoad中,我调用我的-repositionSubViews,在其中执行以下操作: 如果没有UIWebView,则除了将放置在IB中的UIButton居中之外,我什么也不做。 如果确实有UIWebView,则确定其* content * Height并设置其框架以包围整个内容。 UIScrollView *scrollViewInsideWebView = [[webView_ …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.