2013-01-03 16 views
6

पर सी-स्ट्रक्चर जोड़ें मुझे NSDictionary में सी-स्ट्रक्चर जोड़ने में परेशानी है।
सी-स्ट्रक्चर MapKit.h पर MKCoordinateRegion है।obj-c शब्दकोश

कि घोषणा

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

है और CLLocationCoordinate2D की घोषणा

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

MKCoordinateSpan ही है।

अब, मैं एमएससीओर्डिनेट क्षेत्र को 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 लाइन में त्रुटि है।
त्रुटि संदेश असंगत प्रकार 'आईडी' के पैरामीटर के लिए "MKCoordinateRegion 'भेज रहा है"

धन्यवाद।

+2

स्वीकार नहीं जवाब [यहां] (http://stackoverflow.com/questions/6538726/how-to-return-multiple-values-from-a-method/6539044 देखें # 6,539,044)। उदाहरण सरणी के लिए है लेकिन यह अभी भी शब्दकोशों पर लागू होता है। – Joe

उत्तर

9

करने के लिए अपने struct परिवर्तित तुम एक struct सीधे एक शब्दकोश में नहीं डाल सकते प्रयास करें, लेकिन आप इस तरह से है कि यह जोड़ा जा सकता है में लपेट के लिए एक NSValue उपयोग कर सकते हैं।

Example:

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"]; 
+0

आपके उत्तर के लिए धन्यवाद! लचीला/सामान्य लेकिन सुरुचिपूर्ण समाधान के लिए –

+1

+1। हालांकि उनकी टिप्पणी से जो के लिंक किए गए उत्तर एक प्रासंगिक और विशिष्ट समाधान का गठन करते हैं। – Till

3

NSData

NSData *data = [NSData dataWithBytes:&region length:sizeof(MKCoordinateRegion)]; 
[param setObject:data forKey:@"region"]; 
+0

बहुत धन्यवाद! –

+0

आपका स्वागत है! –

संबंधित मुद्दे