Swift 2.2でNSDateオブジェクトを保持する静的変数を定義します。私は以下を試しました:Swiftで静的変数を定義する
何も起こっていません。私はObjective-Cで普通のものと同じことを書いてきました。
static NSString* str
ただ、Swiftではうまくいきません。
もっと明確にするために、私はlocationManagerのdidUpdateLocationメソッドで静的な間隔を使用して、関数が5分後にのみ発生するようにしたいと考えていますが、ユーザーの場所はまだリアルタイムで表示されます。これは、この静的NSDate変数が含まれており、didUpdateLocations方法でそれをインスタンス化し、私は私が集まる何、私はクラスの報復を作成する必要があるだろうから、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];
}
でそれをやった方法です。はい? ありがとう!
最初の構文を使用してクラス内で 'static'プロパティを定義できます。しかし、あなたはこれをやろうとしていますか?Objective-Cの 'static'キーワードは、Swiftで許可されていないさまざまなスコープ(グローバル、そのコンパイル単位のみにアクセス可能にする、メソッド実装内のローカル変数)で使用できます。あなたは私たちに、これ以上コメントするためにこれをやろうとしているところを見せなければなりません。 – Rob
[Swiftの静的プロパティ]の可能な複製(http://stackoverflow.com/questions/26567480/static-properties-in-swift) –
これは関数スコープの静的変数であり、私の提案は機能するはずです。 - しかし、代わりにそれらを囲むクラスのインスタンス変数にしないでください。 –