有什么我不完全理解什么时候在Swift中改变值types。 正如“Swift编程语言”所述,iBook声明: 默认情况下,值types的属性不能从其实例方法中修改。 所以为了使这成为可能,我们可以在结构和枚举中使用mutating关键字来声明方法。 对我来说不完全清楚的事情是这样的:你可以从一个结构体外改变一个var,但你不能从它自己的方法改变它。 这对我来说似乎是违反直觉的,因为在面向对象的语言中,你通常试图封装variables,所以只能从内部改变它们。 结构似乎是相反的。 详细说明,下面是一个代码片段: struct Point { var x = 0, y = 0 mutating func moveToX(x: Int, andY y:Int) { //Needs to be a mutating method in order to work self.x = x self.y = y } } var p = Point(x: 1, y: 2) px = 3 //Works from […]
我试图从一个笔尖创build一个自定义表格视图单元格。 我在这里指的是这篇文章。 我面临两个问题。 我创build了一个带有UITableViewCell对象的.xib文件。 我创build了UITableViewCell一个子类,并将其设置为单元的类和Cell作为可重用的标识符。 import UIKit class CustomOneCell: UITableViewCell { @IBOutlet weak var middleLabel: UILabel! @IBOutlet weak var leftLabel: UILabel! @IBOutlet weak var rightLabel: UILabel! required init(coder aDecoder: NSCoder!) { super.init(coder: aDecoder) } override init(style: UITableViewCellStyle, reuseIdentifier: String!) { super.init(style: style, reuseIdentifier: reuseIdentifier) } override func awakeFromNib() { super.awakeFromNib() // Initialization code } override […]
我有一个UIView和我已经添加了点击手势: let tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:")) tap.delegate = self myView.addGesture(tap) 我想在testing文件中以编程方式调用它。 sendActionForEvent 我正在使用这个function,但它不工作: myView.sendActionForEvent(UIEvents.touchUpDown) 它显示发送给实例的无法识别的select器。 我怎么解决这个问题? 提前致谢
我试图在Swift中检查系统信息。 我发现,这可以通过代码来实现: var sysData:CMutablePointer<utsname> = nil let retVal:CInt = uname(sysData) 我有这个代码的两个问题: 什么应该是sysData的初始值? 这个例子在retVal中给出-1可能是因为sysData是零。 我如何从sysData中读取信息?
我正在尝试为我的项目设置unit testing。 这是一个现有的Objective-C应用程序,我最近添加了一个Swift类。 我已经设置了“MyProject-Swift.h”和Swift Bridging文件(包括“MyProject”和“MyProjectTest”),并且能够使用Objective-C和Swift代码构build和运行应用程序。 不过,现在我想在新的Swift类上运行一些unit testing。 我设置我的testing文件,它看起来像下面这样: MySwiftClassTests.swift: import UIKit import XCTest import MyProject class MySwiftClassTests: XCTestCase { override func setUp() { super.setUp() // Put setup code here. This method is called before the invocation of each test method in the class. } override func tearDown() { // Put teardown code here. This method […]
我正试图在使用cocoapods库的Xcode 6 Beta-6中构build一个照片应用程序扩展。 Xcode为照片扩展创build的桥接标题不能从cocoapods中看到任何东西。 例如: #import <GPUImage/GPUImage.h>导致"GPUImage/GPUImage.h" file not found错误"GPUImage/GPUImage.h" file not found 。 我已经尝试了所有可能的导入path(括号和引号),几乎没有成功。 SVProgressHUD这样简单的豆荚的例外是下面的丑陋可怕的黑客工作: #import "../Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h" 。 但是,对于GPUImage,它走进GPUImage.h头文件,并决定它突然看不到GPUImageContext.h尽pipe没有问题,当这是导入与正常的swift代码不是应用程序扩展的一部分的桥接头。 应用程序扩展的编译有什么不同,以防止桥接头行为正常? 注:我已经阅读了本教程的每一个可能的组合,并不是立即适用,以防万一有人认为他们在那里find了答案。 另外, 这个SO问题中描述的问题可能是相关的,但我仍然问这个问题,以防我的问题是特定于应用程序扩展。
我真的努力尝试读取一个JSON文件到Swift中,所以我可以玩弄它。 我已经花了2天的最好的一部分重新search和尝试不同的方法,但没有运气,因此,我已经注册到StackOverFlow,看看有没有人可以指出我在正确的方向….. 我的JSON文件名为test.json,包含以下内容: { "person":[ { "name": "Bob", "age": "16", "employed": "No" }, { "name": "Vinny", "age": "56", "employed": "Yes" } ] } 该文件直接存储在文档中,并使用以下代码访问它: let file = "test.json" let dirs : String[] = NSSearchPathForDirectoriesInDomains( NSSearchpathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainMask, true) as String[] if (dirs != nil) { let directories: String[] = dirs let dir = directories[0] let path […]
我使用下面的代码: var continousDigitsRange:Range<Int> = Range<Int>(start: 0, end: 0) 由于更新到Xcode 7.3(Swift 2.2)我得到了以下提示: 'init(start:end :)'被弃用:它将在Swift中被移除3.使用'..'运算符。 对于我来说,不清楚如何“正确地”翻译“使用”..“”操作符。
这是我的情况: let passwordSecureTextField = app.secureTextFields["password"] passwordSecureTextField.tap() passwordSecureTextField.typeText("wrong_password") //here is an error 用户界面testing失败 – 任何元素或任何后代都没有键盘焦点。 元件: 哪里不对? 这对正常的textFields secureTextFields用,但问题只出现在secureTextFields 。 任何解决方法?
这是我想要做的。 如果你曾经玩过Halo或CoD,那么你会知道你可以改变武器装载的名字。 我正在做的是让你可以使用文本字段来改变你的装载名称。 这里有个问题,load-out菜单中的load-out名字是一个button(用于select和查看关于这个load-out的信息),我可以这样写: @IBAction func renameClassButton(sender: AnyObject) { classTopButton.text = "\(classTopTextField)" } 除了[classTopButton]是一个不允许'.text'后缀的button