首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将c-struct添加到字典中

将c-struct添加到字典中
EN

Stack Overflow用户
提问于 2013-01-03 22:06:55
回答 2查看 3.5K关注 0票数 8

我在将C-结构添加到NSDictionary时遇到了问题。

C结构是MapKit.h上的MKCoordinateRegion。

这份声明是

代码语言:javascript
复制
typedef struct {
    CLLocationCoordinate2D center;
    MKCoordinateSpan span;
} MKCoordinateRegion;

CLLocationCoordinate2D的声明是

代码语言:javascript
复制
typedef struct {
    CLLocationDegrees latitude;
    CLLocationDegrees longitude;
} CLLocationCoordinate2D;

MKCoordinateSpan是相同的。

现在,我想将MKCoordinateRegion添加到NSDictionary。

代码语言:javascript
复制
    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行有错误。

错误消息是“正在将'MKCoordinateRegion‘发送到不兼容类型’id‘的参数”

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-03 22:14:19

您不能将结构直接放入字典中,但可以使用NSValue将其包装为可以添加的方式。

Example

代码语言:javascript
复制
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"];
票数 11
EN

Stack Overflow用户

发布于 2013-01-03 22:10:17

尝试将结构转换为NSData

代码语言:javascript
复制
NSData *data = [NSData dataWithBytes:&region length:sizeof(MKCoordinateRegion)];
 [param setObject:data forKey:@"region"];
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14140469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档