【发布时间】:2016-07-02 20:35:17
【问题描述】:
我想在 Swift 2.2 中定义一个静态变量来保存一个 NSDate 对象。我尝试了以下方法:
static var interval:NSDate
var static interval:NSDate
var interval:static NSDate
没有一个在工作。我用正常的 Objective-C 写了同样的东西:
static NSString* str
但在 Swift 中无法正常工作。
让我更清楚一点,我想在 locationManager 的 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];
}
据我所知,我需要创建一个包含此静态 NSDate 变量的类,并在 didUpdateLocations 方法中对其进行实例化。是的? 谢谢!
【问题讨论】:
-
您可以使用第一种语法在类中定义
static属性。但是你在哪里尝试这样做? Objective-Cstatic关键字可以在 Swift 中不允许的不同范围内使用(全局,使其只能被该编译单元访问;方法实现中的局部变量)。您必须向我们展示在哪里您尝试这样做,以便我们进一步发表评论。 -
这是函数范围的静态变量,我的建议应该可行。 – 但是为什么不让它们成为封闭类的实例变量呢?
标签: swift variables static swift2