我使用拆分视图控制器作为初始视图控制器开始我的项目,并从故事板自动启动它.
一般地,通过该用户界面的应用程序有一个且只有一个拆分视图控制器作为根,所以我创建一个静态变量在子类,并将其设置初始化已完成时.
所以我想用swift试试这个行为.
我在iBook上阅读了关于Type属性(带有static和class关键字)的Swift编程语言指南,并尝试了一段代码:
import UIKit
class SplitViewController: UISplitViewController {
class func sharedInstance() -> SplitViewController {
return SplitViewController.instance
}
class let instance: SplitViewController = nil
init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
self.initialization()
}
init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder);
self.initialization()
}
func initialization() {
SplitViewController.instance = self;
}
}
Run Code Online (Sandbox Code Playgroud)
但是当Xcode说不支持类型属性的class关键字时,我想通了.

你有解决方案吗?
如何在类范围中声明静态常量?如
class let Constant: Double = 3.1415926
// I know that in class we use class modifier instead of static.
Run Code Online (Sandbox Code Playgroud) 在Java中,我可以创建一个静态初始化器,如:
static { ... }
Run Code Online (Sandbox Code Playgroud)
在Swift我可以:
class MyClass {
class var myVar:Int?
}
Run Code Online (Sandbox Code Playgroud)
是否可以在Swift中创建某种类/静态var初始化器?
我想定义一个静态变量来保存Swift 2.2中的NSDate对象.我尝试过以下方法:
static var interval:NSDate
var static interval:NSDate
var interval:static NSDate
Run Code Online (Sandbox Code Playgroud)
没有人工作.我在Objective-C中用正常的方式写了同样的东西:
static NSString* str
Run Code Online (Sandbox Code Playgroud)
但就是在斯威夫特工作.
让我更清楚一点,我想在didManager的didUpdateLocation方法中使用一个静态区间,这样一个函数只会在五分钟后发生,但用户的位置仍然会实时看到.这就是我在Objective C中的做法
-(void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations
{
static NSDate *previous; //<--- This in Swift
static int run = 0;
CLLocation *location = locations.lastObject;
if (run == 0 || [location.timestamp timeIntervalSinceDate:previous] > 10)
{
[_dbObj insert: location.coordinate.latitude : location.coordinate.longitude : [NSDate date] : location.timestamp];
previous = location.timestamp;
run++;
}
MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(location.coordinate, 2*1609.34, 2*1609.34);
[[self mapView] setRegion:viewRegion animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
根据我收集的内容,我需要创建一个包含此静态NSDate变量的类,并在didUpdateLocations方法中实例化它.是?谢谢!
在Objective C中使用静态变量非常方便(在所有函数/方法调用中都保持静态变量的值),但是我在Swift中找不到这样的东西.
有这样的事吗?
这是C中静态变量的一个例子:
void func() {
static int x = 0;
/* x is initialized only once across four calls of func() and
the variable will get incremented four
times after these calls. The final value of x will be 4. */
x++;
printf("%d\n", x); // outputs the value of x
}
int main() { //int argc, char *argv[] inside the main is optional in the particular program
func(); // prints 1
func(); // prints 2
func(); …Run Code Online (Sandbox Code Playgroud)