2011-10-16 11 views
27
placemark = [[MKPlacemark alloc]initWithCoordinate:storedCoordinate addressDictionary:addressDict]; 

मैं ऊपर कोड के लिए उपयोग करने के लिए शब्दकोश बनाने की कोशिश की, लेकिन कुछ भी काम करता है :(एमकेप्लेसमार्क के लिए एड्रेस डिक्शनरी कैसे बनाएं?

NSDictionary *addressDict = [[NSDictionary alloc] initWithObjectsAndKeys: 
    location.countryCode, @"CountryCode", 
    location.country,@"kABPersonAddressCountryKey", 
    location.state, kABPersonAddressStateKey, 
    location.city, @"City", 
    location.street, kABPersonAddressStreetKey, 
    location.zip, kABPersonAddressZIPKey, 
    nil]; 
+1

देश कुंजी उद्धरण में है, लेकिन नहीं होना चाहिए। [यह सवाल] देखें (http://stackoverflow.com/q/1923525/467105)। – Anna

+0

मैं सिर्फ अलग-अलग प्रकार दिखाता हूं, उनमें से कोई भी काम नहीं करता – Shmidt

+0

क्या आप इसका वर्णन कर सकते हैं कि यह कैसे काम नहीं करता है? उदाहरण के लिए, यदि यह क्रैश होता है तो त्रुटि संदेश क्या होता है? यदि दुर्घटनाग्रस्त नहीं है तो क्या वास्तव में? Init के बाद प्लेसमार्क चर के साथ आप क्या करते हैं? – Anna

उत्तर

44

MKPlacemark के लिए addressDictionary बनाते समय, यह अनुशंसा की जाती है कि आप "पता संपत्ति" स्थिरांक के रूप में परिभाषित का उपयोग ABPerson। ध्यान दें, क्योंकि इन स्थिरांक प्रकार CFStringRef के हैं, तो आप उन्हें NSDictionary भीतर कुंजी के रूप में उपयोग करने के लिए एक (NSString *) के लिए उन्हें कास्ट करने के लिए की आवश्यकता होगी।

NSDictionary *addressDict = @{ 
           (NSString *) kABPersonAddressStreetKey : location.street, 
           (NSString *) kABPersonAddressCityKey : location.city, 
           (NSString *) kABPersonAddressStateKey : location.state, 
           (NSString *) kABPersonAddressZIPKey : location.zip, 
           (NSString *) kABPersonAddressCountryKey : location.country, 
           (NSString *) kABPersonAddressCountryCodeKey : location.countryCode 
           }; 

updat iOS के लिए ई 9+: उपयोग नए संपर्क फ्रेमवर्क ध्यान देने योग्य बात यह है कि आप अपनी परियोजना के निर्माण सेटिंग के पास 'AddressBook.framework' जोड़ने की आवश्यकता होगी

NSDictionary *addressDict = @{ 
           CNPostalAddressStreetKey : location.street, 
           CNPostalAddressCityKey : location.city, 
           CNPostalAddressStateKey : location.state, 
           CNPostalAddressPostalCodeKey : location.zip, 
           CNPostalAddressCountryKey : location.country, 
           CNPostalAddressISOCountryCodeKey : location.countryCode 
           }; 
+2

यदि आप एआरसी का उपयोग कर रहे हैं तो आपको कास्ट में '__bridge' जोड़ने की जरूरत है, जैसे: '(__bridge NSString *) kABPersonAddressStreetKey: location.street' –

+2

क्या एक क्रमी एपीआई –

+0

# आयात <पता पुस्तिका/पता पुस्तिका.h> (<= 8.x) # आयात <संपर्क/संपर्क.h> (> = 9.x) – user3589771

14

वर्थ। इसके अलावा (ज फ़ाइल) अपने शीर्षक में आयात:

#import <AddressBook/AddressBook.h> 
फिर अपने कार्यान्वयन में

(मीटर फ़ाइल) आप का उपयोग कर सकते हैं:

(NSString*)kABPersonAddressStreetKey 
(NSString*)kABPersonAddressCityKey 
(NSString*)kABPersonAddressStateKey 
(NSString*)kABPersonAddressCountryKey 
+0

महान स्पष्टीकरण –

+0

आयात विवरण मेरी समस्या को हल करने की कुंजी थी। –

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