在将Objective-C代码移植到Swift的时候,我遇到过几次这个问题。 说我有以下代码: dispatch_async(dispatch_get_main_queue()) { self.hostViewController?.view.addSubview(self.commandField) } 这将导致错误,强调整个dispatch_async调用,提供: Could not find member 'addSubview' 我认为这是一个错误,还没有得到正确的实施,因为如果我把addSubview调用的dispatch_async块外,项目生成的罚款。 起初,我认为这可能与在这个街区捕捉self有关。 但是,插入[unowned self] in导致相同的错误,就像[weak self] in (在插入适当的! unwrap操作符之后)一样。 我怎样才能让dispatch_async块在Swift中工作,需要捕捉self ?
XCode 6中的这个代码没有错误,但在XCode 7(Swift 2)中发生了这个错误: 方法不会覆盖任何超类的方法 override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { /* Called when a touch begins */ } 当删除重override发生此错误: 方法'touchesBegan( :withEvent :)'用Objective-Cselect器'touchesBegan:withEvent:'与具有相同Objective-Cselect器的超类'UIResponder' 的touchesBegan( :withEvent 🙂 方法冲突
我有一个名为“BaseViewController”的Swift写的UIViewController的子类。 我现在有一个名为“ViewController1”的“旧”视图控制器,用Objective-C编写,我想从“BaseViewController”inheritance。 按照其他的build议,我已经导入了“Project-Swift.h”头文件。 我的问题发生时,像这样的子类化 #import <UIKit/UIKit.h> #import "MyProject-Swift.h" @interface ViewController1 : BaseViewController @end 错误是: 不能使用objc_subclassing-restricted属性来inheritance一个类 它出现在@interface …行上。
我刚刚开始看看Mattt的新Alamofire swiftnetworking库,我不太确定如何使用自定义头文件。 我试图从AFNetworking转换到Alamofire的代码是这样的: let request = NSMutableURLRequest(URL: url) request.setValue(authorizationToken, forHTTPHeaderField:"Authorization")
在Objective-C中,我们使用这样做 + (Class)layerClass { return [CAEAGLLayer class]; } 显然这是行不通的: CAEAGLLayer.class() 因为class是Swift中的一个关键字。 你如何在Swift中做到这一点?
你如何将UILabel的文本设置为以Swift编程的粗体? 我的代码到目前为止: var label = UILabel(frame:theFrame) label.text = "Foo"
我想要这个代码的Swift版本: NSArray *sortedNames = [names sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
当我推UIViewController ,它在新的UIViewController后退button中有一些标题,如果标题有很多文字,它在iPhone 4s中看起来不太好所以我想删除它。 如果我在prepareForSegue函数中添加一些代码,这将是一个麻烦。 有什么更好的方法来实现这个?
let block = UIView(frame: CGRectMake(cellWidth-25, cellHeight/2-8, 16, 16)) block.backgroundColor = UIColor(netHex: 0xff3b30) block.layer.cornerRadius = 9 block.clipsToBounds = true 这是我现在所拥有的,但显然不是正确的做法。 最简单的方法是什么?
假设一个从UIView派生的类如下: class MyView: UIView { var myImageView: UIImageView init(frame: CGRect) { super.init(frame: frame) } init(coder aDecoder: NSCoder!) { super.init(coder: aDecoder) } … 如果我想在两个初始化器中都有相同的代码,比如 self.myImageView = UIImageView(frame: CGRectZero) self.myImageView.contentMode = UIViewContentMode.ScaleAspectFill 而不是在类实现中重复该代码两次,我将如何构造init方法? 试过的方法: 创build了一个方法func commonInit()在super.init之后func commonInit() – > Swift编译器在调用super.init之前给出了有关未初始化variablesmyImageView的错误 在super.init调用func commonInit()之前,显然会失败,编译器错误在super.init之前调用“self”