2011-06-30 19 views
7

से एक से अधिक मान वापस जाने के लिए मेरे पास है - (CLLocationCoordinate2D) विधि, मैं (उन स्थानों किसी अन्य विधि में उपयोग कर रहे हैं) मेरी विधि इस तरह दिखता है कि विधि से कई स्थानों पर लौटने के लिए, चाहते हैंकैसे एक विधि

-(CLLocationCoordinate2D) addressLocation{ 
- -------- 
---------- 
return location; 
} 

कई स्थानों को वापस करना संभव है (मेरा मतलब है वापसी स्थान 1, वापसी स्थान 2 .. ..) ?? कृपया मेरी मदद करें धन्यवाद

उत्तर

4

अपनी जगह ऑब्जेक्ट को किसी सरणी में जोड़ें और इसके बजाय सरणी लौटाएं। जैसे

-(NSArray*) addressLocation{ 
    ... // Set your locations up 
    NSArray *array = [NSArray arrayWithObjects:location1, location2, nil]; 
    ... // Do any additional processing and return array. 
} 
+0

क्या CLLocationCoordinate2D विधि से एक सरणी वापस करना संभव है ?? – sajaz

+2

जॉर्ज क्या कह रहा है कि आपको अपने विधि हस्ताक्षर को फिर से लिखना होगा ताकि यह CLLocationCoordinate2D के बजाय एक ऐरे लौटा सके। फिर विधि कार्यान्वयन में, आपको समन्वय के साथ एक सरणी भरनी चाहिए और उनको वापस कर देना चाहिए। केवल 1 वापसी आग लग जाएगी, फिर वह विधि पूरी हो जाएगी। आप एक ही विधि कॉल में 2 या अधिक रिटर्न नहीं कर सकते हैं। – Andrew

+0

या, बहुत सारे लोग धन्यवाद। मुझे मिल गया :) :) – sajaz

7

CLLocationCoordinate2D एक ऑब्जेक्ट नहीं है, इसलिए उन्हें केवल सरणी में जोड़ा नहीं जा सकता है और लौटाया जा सकता है। चूंकि वे structs हैं उसके लिए कुछ विकल्प,

  1. malloc एक सरणी पुराने फैशन तरीका है और सरणी
  2. malloc एक नया struct सूचक में struct डेटा की प्रतिलिपि, डेटा की प्रतिलिपि है, तो एक में सूचक की दुकान NSValue
  3. एक वर्ग struct के क्षेत्र के रूप में ही गुण है कि बनाएँ, और एक सरणी

विकल्प 1 और 2 जब मुक्त करने के लिए डेटा तो उन से बचने के लिए के रूप में अतिरिक्त स्मृति प्रबंधन की आवश्यकता के लिए कि जोड़ें। विकल्प 3 अच्छा है और ऐसा ही होता है मैपकिट कक्षा CLLocation प्रदान करता है। यहां 2 निर्देशांक का एक उदाहरण दिया गया है।

-(NSArray*) addressLocations 
{ 
    CLLocationCoordinate2D coord1 = CLLocationCoordinate2DMake(1.00, 1.00); 
    CLLocationCoordinate2D coord2 = CLLocationCoordinate2DMake(2.00, 2.00); 

    CLLocation *loc1 = [[CLLocation alloc] initWithLatitude:coord1.latitude longitude:coord1.longitude]; 
    CLLocation *loc2 = [[CLLocation alloc] initWithLatitude:coord2.latitude longitude:coord2.longitude]; 

    NSArray *array = [NSArray arrayWithObjects:loc1, loc2, nil]; 

    [loc1 release]; 
    [loc2 release]; 

    return array; 
} 
+0

+1 के साथ काम करने के लिए प्रासंगिक मानचित्र किट क्लास को इंगित करने के लिए +1 – bshirley