2012-11-17 14 views
5
NSNumber * latitude = [NSNumber numberWithDouble:[[cityDictionary valueForKeyPath:@"coordinates.latitude"]doubleValue]]; 

     NSNumber * longitude = [NSNumber numberWithDouble:[[cityDictionary valueForKeyPath:@"coordinates.longitude"]doubleValue]]; 


    CLLocation *listingLocation = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude]; 

मैं # 3 रेखा से ऊपर पर निम्न त्रुटि हो रही है:भेजा जा रहा है 'NSNumber * __ मजबूत' असंगत प्रकार 'CLLocationDegrees' के पैरामीटर के लिए (उर्फ 'डबल')

Sending 'NSNumber *__strong' to parameter of incompatible type 'CLLocationDegrees' (aka 'double') 

मैं जानता हूँ कि यह वजह से है मैं एक ऐसे स्थान पर एनएसएनंबर पास करने की कोशिश कर रहा हूं जहां यह एक डबल की अपेक्षा करता है। लेकिन एआरसी के कारण कास्टिंग काम नहीं कर रहा है?

+0

ध्यान दें कि आप वास्तव में कास्टिंग नहीं कर रहे हैं उस कोड में कुछ भी। (यदि आपने वर्तमान समस्या की पहचान करने के मामले में यह मदद नहीं की है, तो यह नहीं है।) –

+0

यह सुनिश्चित नहीं है कि मतदान किसके नीचे है लेकिन यह स्पष्ट है कि कोई ऊब गया है। मैंने उत्तर देने वाले सभी को ऊपर उठाने की कोशिश की – milof

उत्तर

3

[cityDictionary valueForKeyPath:@"coordinates.latitude"] करने के लिए कॉल पहले से ही आप एक NSNumber वस्तु दे रहा है। इसे दो बार क्यों परिवर्तित करें और फिर नया NSNumber बनाएं?

तुम सिर्फ कर सकता है:

NSNumber *latitude = [cityDictionary valueForKeyPath:@"coordinates.latitude"]; 
NSNumber *longitude = [cityDictionary valueForKeyPath:@"coordinates.longitude"]; 
CLLocation *listingLocation = [[CLLocation alloc] initWithLatitude:[latitude doubleValue] longitude:[longitude doubleValue]]; 

यदि ऐसा पाया जाता है कि [cityDictionary valueForKeyPath:@"coordinates.latitude"] वास्तव में एक NSString, न कि किसी NSNumber लौट रही है, तो ऐसा करते हैं:

CLLocationDegrees latitude = [[cityDictionary valueForKeyPath:@"coordinates.latitude"] doubleValue]; 
CLLocationDegrees longitude = [[cityDictionary valueForKeyPath:@"coordinates.longitude"] doubleValue]; 
CLLocation *listingLocation = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude]; 
2

आप डबल के पैरामीटर में NSNumber टाइप कर रहे हैं। आप इसे CLLocationDegree या double पर बदलने पर विचार कर सकते हैं, लेकिन यदि आप इसे कहीं और इस्तेमाल कर रहे हैं या कोर डेटा के साथ संग्रहीत कर रहे हैं तो मैं इसे NSNumber के रूप में छोड़ दूंगा।

CLLocation *listingLocation = [[CLLocation alloc] initWithLatitude:[latitude doubleValue] longitude:[longitude doubleValue]];