为什么要创建一个"Implicitly Unwrapped Optional"来创建一个常规变量或常量?如果您知道它可以成功解开,那么为什么要首先创建一个可选项呢?例如,为什么这样:
let someString: String! = "this is the string"
Run Code Online (Sandbox Code Playgroud)
会比以下更有用:
let someString: String = "this is the string"
Run Code Online (Sandbox Code Playgroud)
如果"optionals指示常量或变量允许'没有值'",但"有时从程序的结构中可以清楚地看到,在首次设置该值之后,可选项将始终具有值",那么有什么意义呢?首先让它成为可选项?如果你知道一个可选项总是会有一个值,那么它不是可选的吗?
我创建了一个容器,-d
因此它不是交互式的.
docker run -d shykes/pybuilder bin/bash
Run Code Online (Sandbox Code Playgroud)
我看到容器已退出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d6c45e8cc5f0 shykes/pybuilder:latest "bin/bash" 41 minutes ago Exited (0) 2 seconds ago clever_bardeen
Run Code Online (Sandbox Code Playgroud)
现在我想在机器上运行偶尔的命令并退出.只是为了得到答复.
我试着启动机器.我试着附上.我以为我可以run
用容器打电话,但似乎不允许这样做.使用start
似乎只是运行然后快速存在.
退出后我想回到交互模式.
我试过了:
docker attach d6c45e8cc5f0
Run Code Online (Sandbox Code Playgroud)
但我得到:
2014/10/01 22:33:34 You cannot attach to a stopped container, start it first
Run Code Online (Sandbox Code Playgroud)
但是,如果我开始它,它无论如何都会退出.抓住22.我无法获胜.
我有一个类Person,它被多次实例化.每个人都得到自己的计时器.当我在init
为Person
我打电话startTimer()
.
class Person {
var timer = NSTimer()
func startTimer() {
timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("timerTick"), userInfo: nil, repeats: true)
}
func timerTick() {
angerLevel++
println("Angry! \(angerLevel)")
}
...
...
}
Run Code Online (Sandbox Code Playgroud)
所以我可能在一个数组中有3个Person实例Person[]
.我收到一个错误:
2014-06-25 13:57:14.956 ThisProgram[3842:148856] *** NSForwarding: warning: object 0x113760048 of class '_TtC11ThisProgram6Person' does not implement methodSignatureForSelector: -- trouble ahead
Run Code Online (Sandbox Code Playgroud)
我在其他地方读过我应该继承的,NSObject
但这是在Swift而不是Obj-C.该功能在课堂内,所以我不知道该怎么做.
我有一本字典Structs
.我试图分配struct
我循环时的值dictionary
.斯威夫特告诉我cannot assign to 'isRunning' in 'blockStatus'
.我一直没能找到在文档上的任何这种特殊的不变性dictionaries
或structs
.
直接从操场上:
import Cocoa
struct BlockStatus{
var isRunning = false
var timeGapForNextRun = UInt32(0)
var currentInterval = UInt32(0)
}
var statuses = ["block1":BlockStatus(),"block2":BlockStatus()]
for (block, blockStatus) in statuses{
blockStatus.isRunning = true
}
cannot assign to 'isRunning' in 'blockStatus'
blockStatus.isRunning = true
Run Code Online (Sandbox Code Playgroud)
如果我将其更改struct
为a,这确实有效class
.
我猜它与复制结构并始终引用类的事实有关?
编辑:所以即使它是复制它..为什么我不能改变它?它会给我带来错误的结果,但你可以改变常量的成员而不是常量本身.例如,你可以这样做:
class A {
var b = 5
}
let a = A()
a.b = …
Run Code Online (Sandbox Code Playgroud) 现在,由于完整的值语义,Swift的Array是真正不可变的,我如何创建一个不可变数组的可变副本?与Obj-C相似mutableCopy()
.我当然可以将数组转发到NSArray并使用mutableCopy()
但不想使用NSArray,因为它没有严格键入.
我有一个toolbar
具有items
从故事板.我想从工具栏中删除一个项目并使用toolbar.setItems
.我想在没有铸造的情况下这样做NSArray
,因为这些功能都没有NSArrays
,他们采取[AnyObject]
.
显然现在当我打电话removeAtIndex()
它不起作用,这是正确的.我只需要一个mutableCopy
简单地分配给var对我来说不起作用并且给' Immutable value of type [AnyObject]
'
var toolbarItems = self.toolbar.items
toolbarItems.removeAtIndex(2) //Immutable value of type [AnyObject]
Run Code Online (Sandbox Code Playgroud)
我正在使用Beta 3
当下划线完成它的_.each
循环时是否有回调因为如果我console log
之后立即显然我用每个循环填充的数组不可用.这是一个嵌套_.each
循环.
_.each(data.recipe, function(recipeItem) {
var recipeMap = that.get('recipeMap');
recipeMap[recipeItem.id] = { id: recipeItem.id, quantity: recipeItem.quantity };
});
console.log(that.get('recipeMap')); //not ready yet.
Run Code Online (Sandbox Code Playgroud) 我正在开发Play应用程序,我刚开始使用Scala.我看到Action
在下面的函数和大括号之前的等号之后有这个单词.
def index = Action {
Ok(views.html.index("Hi there"))
}
Run Code Online (Sandbox Code Playgroud)
这段代码有什么作用?我已经看到它与def index = {
大括号之前的单词一起使用但没有使用.
我假设函数的名称是index
.但我不知道Action
在这种情况下这个词是做什么的.
我想连续两行灰色/条纹.很难解释.这是一张图片::
| - ^ - ^ - ^ - ^ - ^ - |
| - ^ - ^ - ^ - ^ - ^ - |
| ------------- |
| ------------- |
| - ^ - ^ - ^ - ^ - ^ - |
| - ^ - ^ - ^ - ^ - ^ - |
| ------------- |
| ------------- |
| - ^ - ^ - ^ - ^ - ^ - |
| - …
我似乎无法找到一个返回Swift中对象类型的函数或方法.
如何在Swift中检索对象的类型或类?
我尝试使用Obj-C类,这显然不起作用.
在python中你有像type
或者的东西isinstance
在Javascript中你有 constructor
我正在运行一个使用应用程序组的watchkit应用程序,我似乎无法让它运行.每当我尝试运行应用程序时,我都会收到一条警告,上面写着"SPErrorGizmoInstallNeverFinishedErrorMessage".我的扫视控制器中的代码相对较短.
let sharedGroupName = NSBundle.mainBundle().objectForInfoDictionaryKey("Shared Group") as! String
var sharedDefaults:NSUserDefaults!
override func willActivate() {
super.willActivate()
sharedDefaults = NSUserDefaults(suiteName: sharedGroupName)
var timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("update"), userInfo: nil, repeats: true)
}
func update() {
println(sharedDefaults?.valueForKey("timeMessage") as! String)
}
Run Code Online (Sandbox Code Playgroud)
我的ViewController.swift中的代码也很短,也只是设置此共享默认对象:
let sharedGroupName = NSBundle.mainBundle().objectForInfoDictionaryKey("Shared Group") as! String
var sharedDefaults:NSUserDefaults!
sharedDefaults?.setObject(timeMessage.text, forKey: "timeMessage")
sharedDefaults?.synchronize()
Run Code Online (Sandbox Code Playgroud)
此错误阻止我运行任何watchkit应用程序.不是主应用程序或一瞥或通知.我有一个在info.plist中列出的应用程序组.我有一个自定义构建设置到应用程序组名称.任何帮助将不胜感激.