8

C-struct を NSDictionary に追加するのに問題があります。
C 構造体は MapKit.h の MKCoordinateRegion です。

その宣言は

typedef struct {
    CLLocationCoordinate2D center;
    MKCoordinateSpan span;
} MKCoordinateRegion;

そしてCLLocationCoordinate2Dの宣言は

typedef struct {
    CLLocationDegrees latitude;
    CLLocationDegrees longitude;
} CLLocationCoordinate2D;

MKCoordinateSpan は同じです。

ここで、MKCoordinateRegion を NSDictionary に追加します。

    CLLocationCoordinate2D center = CLLocationCoordinate2DMake(40.723128, -74.000694);
    MKCoordinateSpan span = MKCoordinateSpanMake(1.0, 1.0);
    MKCoordinateRegion region = MKCoordinateRegionMake(center, span);
    NSMutableDictionary *param = [[NSMutableDictionary alloc] init];
    [param setObject:region forKey:@"region"];

5 行目にエラーがあります。
エラーメッセージは「互換性のないタイプ「id」のパラメーターに「MKCoordinateRegion」を送信しています」

ありがとう。

4

2 に答える 2

11

構造体を直接ディクショナリに入れることはできませんが、追加できるようにan を使用しNSValueてラップすることができます。

typedef struct { 
  float real; 
  float imaginary; 
} ImaginaryNumber; 

ImaginaryNumber miNumber; 
miNumber.real = 1.1; 
miNumber.imaginary = 1.41; 

NSValue *miValue = [NSValue value: &miNumber 
                        withObjCType:@encode(ImaginaryNumber)]; 

[param setObject:miValue forKey:@"region"];
于 2013-01-03T14:14:19.147 に答える
3

構造体をに変換してみてくださいNSData

NSData *data = [NSData dataWithBytes:&region length:sizeof(MKCoordinateRegion)];
 [param setObject:data forKey:@"region"];
于 2013-01-03T14:10:17.460 に答える