我正在制作一个简单的WatchKit应用程序。我有一个golbal int变量,在第一个InterfaceController中值为0。
这是我的第一个界面:
import WatchKit
import Foundation
import UIKit
var index:Int = 0
class InterfaceController: WKInterfaceController {
.....
}
在secondView接口中我想更改此全局变量的值:
import UIKit
import WatchKit
class secondInterfaceController: WKInterfaceController {
override init(context: AnyObject?) {
// Initialize variables here.
super.init(context: context)
// Configure interface objects here.
NSLog("%@ init", self)
println("index: \(index)")
index = 2
}
}
但我收到一个错误:“无法为变量索引分配此表达式的结果”。我不知道为什么,我想知道如何做到这一点。我可以为IOS的应用程序更改全局变量的值。感谢
答案 0 :(得分:2)
我复制了您的代码以测试问题,打算测试潜在的解决方案。相反,我确认这个问题不可重现。
为了能够运行代码,我不得不将其更改为override func awakeWithContext(context: AnyObject?)
。从今天发布的beta3和beta4的发行说明中:
WKInterfaceController方法initWithContext:已被弃用。请使用awakeWithContext:而不是。 WKInterfaceController的指定初始化程序现在是init。
鉴于您的代码使用init(context: AnyObject?)
,并且您没有收到此错误消息:
初始化程序不会覆盖其超类
中的指定初始值设定项
...它表示您使用的是早于测试版3的Xcode 6.2版本。因此,早期测试版中可能存在导致您出现问题的错误。更新到今天的beta4版本并重新测试这个问题是非常可取的。
在相关的说明中,有许多程序员认为全局变量的使用是非常不受欢迎的,并且使用另一种方法,甚至是单例,更可取。我只是提请你注意,如果你还没有就这场辩论形成意见。
答案 1 :(得分:0)
我找到了解决方案。如果要在接口内部使用全局变量,则必须将所有接口设置为相同的"目标成员资格"