2

エラーの理由はわかりません: 宣言されていない識別子 'KCLDistanceFilterNone' と 'kCLLocationAccuracyHundredMeters' の使用が CoreLocation.m フォルダーに表示され続けます。「;」を削除しても、さらに多くのエラーがあります。セレクトラインから。誰か助けてくれませんか?

#import "CoreLocation.h"

@implementation CoreLocation : NSObject 

- (NSString *)deviceLocation {
    NSString *theLocation = [NSString stringWithFormat:@"latitude: %f longitude: %f", locationManager.location.coordinate.latitude, locationManager.location.coordinate.longitude];
    return theLocation;
}

- (void)viewDidLoad
{
    locationManager = [[locationManager alloc] init];
    locationManager.distanceFilter = kCLDistanceFilterNone;
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
    [locationManager startUpdatingLocation];
}

@end

また、これを補完し、アプリケーションの位置情報サービスを完成させるには、CoreLocation.m フォルダーに何を入れますか?

4

1 に答える 1

2

いくつかの考え:

  1. リンクされたライブラリ/フレームワークのリストに CoreLocation.framework を含めましたか?

  2. CoreLocation.framework ヘッダーのインポートを行いましたか?

    #import <CoreLocation/CoreLocation.h>
    
  3. CoreLocation上記の行と次の行が混同されているため、それがあなたのクラスに適した名前だとは思いませんでした。

    #import "CoreLocation.h"
    

    #import動作するはずですが (これらの行が両方ともある)、不必要に混乱しているように見えます (また、同じ .h ファイルを 2 回ロードすることを自動的に防止する の機能に関連する問題のリスクがあります)。

    CoreLocationカスタムクラスに (a) 既存のヘッダーと混同しないような一意の名前を付けることをお勧めします。(b) 何をしているかを示す、より意味のある名前 (例:CoreLocationUtilitiesまたはAppCoreLocationManagerまたは何でも)。

  4. あなたの alloc/init メソッド行は変数名を参照しています:

    locationManager = [[locationManager alloc] init];
    

    おそらくクラス名を参照する必要があります。たとえば、次のようになります。

    locationManager = [[CLLocationManager alloc] init];
    

    locationManagerその行でエラーが発生しなかった場合、インスタンス変数をどのように定義したのだろうか。

  5. あなたの問題とは関係ありませんが、カスタムCoreLocationクラスがNSObjectサブクラスであるという参照に混乱していますviewDidLoadが、通常はビューコントローラーメソッドであるメソッドがあります。それは水をさらに濁らせるだけのようです。

于 2013-07-25T04:50:53.280 に答える