2014-08-30 5 views
5

में किसी PHAsset का स्थान प्राप्त करना किसी कारण से locationPHAsset पर संपत्ति केवल उद्देश्य-सी में प्रकट हुई है और स्विफ्ट में नहीं।स्विफ्ट

Documentation: PHAsset.location

यह हल करने के लिए, मैं समझ मैं एक ऑब्जेक्टिव-सी वर्ग जिनका एकमात्र उद्देश्य स्थान निकालने और स्विफ्ट में आयात करना है बना सकते हैं।

LocationGetter.h

@interface LocationGetter : NSObject 
+ (CLLocation *)locationForAsset:(PHAsset *) asset; 
@end 

LocationGetter.m

@implementation LocationGetter 
+ (CLLocation *)locationForAsset:(PHAsset *) asset { 
    return [asset location]; 
} 
@end 

अब तक तो अच्छा, लेकिन जब मैं स्विफ्ट में इसका इस्तेमाल करने की कोशिश:

LocationGetter.locationForAsset(ass) 

'LocationGetter .Type 'एक सदस्य नामित नहीं है' locationForAsset '

बोनस प्रश्न: पृथ्वी पर क्यों ऐप्पल ने location को तेजी से उजागर नहीं किया?

+0

आप अधिक कोड साझा कर सकते हैं, कृपया? किसी कारण से यह मेरे लिए दुर्घटनाग्रस्त हो जाता है। मेरी सभी संपत्तियों के नहीं हो सकता है कि कारण है एक स्थान है, है, लेकिन मैं कैसे उद्देश्य सी समारोह आपके द्वारा दी गई इस संभाल करने के लिए पता नहीं है, मदद की बहुत सराहना की जाएगी। – alexsalo

+0

यह एप्पल की तरह लगता है @alexsalo स्विफ्ट में 'location' एक्सेसर तय कर दी है। आपको स्थान प्राप्त करने के लिए केवल 'ass.location' करने में सक्षम होना चाहिए। 'गधे' आपका PHAsset है। [प्रलेखन: PHAsset.location] (https://developer.apple.com/library/prerelease/ios/documentation/Photos/Reference/PHAsset_Class/index.html#//apple_ref/occ/instp/PHAsset/location) –

+0

हां , आप काफी सही हैं, मुझे तब अनचाहे करने के साथ कोई समस्या थी। एक बार फिर धन्यवाद! – alexsalo

उत्तर

4

ऐसा लगता है कि इस सवाल का जवाब बहुत आसान है। समस्या स्विफ्ट फ़ाइल नहीं पता है कि क्या एक CLLocation है, और इस तरह कि समारोह आयात करने के लिए मना कर दिया। CoreLocation आयात करने से समस्या हल हो जाती है।

import CoreLocation 

LocationGetter.locationForAsset(ass) 

संपादित करें: एप्पल के बाद से .locationPHAsset पर एक गेटर के रूप में शामिल किया गया है। स्थान प्राप्त करना अब asset.location जितना आसान है।

+0

समाधान के रूप में अपने उत्तर को चिह्नित करने के लिए मत भूलना अगर यह वास्तव में समस्या का समाधान – Antonio

+1

है, लेकिन मुझे अपने उत्तर को स्वीकार करने के लिए दो दिन इंतजार करना होगा ... –

+1

वास्तव में? मुझे लगता है कि ... खेद – Antonio

0

जो एक तस्वीर स्थान मुद्रित करने के लिए देख रहे लोगों के लिए, यहाँ यह है:

var allAssets = PHAsset.fetchAssetsWithMediaType(PHAssetMediaType.Image, options: nil) 
    allAssets.enumerateObjectsUsingBlock({asset, index, stop in 
     if let ass = asset as? PHAsset{ 
      println(ass.location) 
     } 
    }