2016-08-07 10 views
25

मैं स्विफ्ट में एक साधारण आईओएस ऐप बनाने पर a basic tutorial का अनुसरण कर रहा हूं।NSURL.URLByAppendingPathComponent() के स्विफ्ट 3 समतुल्य क्या है?

स्विफ्ट 2.x में लिखा है, और मैं XCode 8 बीटा के साथ काम करते हैं और स्विफ्ट 3.

ट्यूटोरियल NSFileManager का उपयोग कर पता चलता है एक डेटा निर्देशिका खोजने के लिए। कक्षा नाम बदल गए हैं, इसलिए ऑटो तय स्विफ्ट 3 इस तरह दिखता है:

static let DocumentsDirectory = FileManager().urlsForDirectory(.documentDirectory, inDomains:.userDomainMask).first! 
static let ArchiveURL = DocumentsDirectory.URLByAppendingPathComponent("meals") 

हालांकि, Xcode अब शिकायत

Value of type 'URL' has no member 'URLByAddingPathComponent' 

है कि मैं पता लगाने के लिए क्या विधि अब कहा जाता है में असमर्थ हूँ।

NSURL Class Reference कैसे स्विफ्ट 3

  • नई विधि नाम क्या है से यह पता करने के लिए के बारे में कोई संकेत नहीं होते हैं?

  • मैं कहां से स्विफ्ट 3 (या, पुस्तकालय URL कक्षा में परिभाषित किया गया है करने के लिए स्विफ्ट 3 इंटरफ़ेस - मैं अभी भी पूरी तरह से नामकरण समझ में नहीं आता) के लिए एक पूर्ण वर्ग संदर्भ खोजने के लिए जाने के लिए है तो मैं कर सकते हैं भविष्य में इन्हें खुद का शोध करें?

+2

बस .appendingPathComponent ( –

+0

[नई 'NSURL' वर्ग संदर्भ] पर एक नजर डालें (https://developer.apple.com/reference/foundation/nsurl) - यह अब है' appendingPathComponent (_ :) ' – Hamish

+0

@ हामिश अरग, इसलिए मैं गलत वर्ग संदर्भ देख रहा था। धन्यवाद! मुझे लगता है कि मैं इसे हटा सकता हूं। (संपादित करें: आह, अब एक जवाब है। क्या आप खुद को हामिश पोस्ट करना चाहते हैं? अन्यथा मैं संपादित करूंगा K.Nimo के उत्तर में संदर्भ लिंक।) –

उत्तर

10

अब यह appendingPathComponent(_:) में बदल गया है और फेंक देता है ताकि आप करते हैं में लपेट की जरूरत है -,

do { 
    let archiveURL = try documentsDirectory?.appendingPathComponent("meals") 
} catch { 
    print(error) 
} 

अद्यतन

प्रति Xcode के रूप में 8 बीटा 4 कैच ब्लॉक appendingpathcomponent(_:) त्रुटि फेंक नहीं है।

प्रासंगिक जानकारी के लिए @Hamish

39

द्वारा जवाब देखने Xcode 8 बीटा 4 के रूप में, यह appendingPathComponent(_:) नाम पर है, और फेंक नहीं है।

static let archiveURL = documentsDirectory.appendingPathComponent("meals") 
Leo Dabus points out in the comments रूप

इसके अलावा, आपके documentsDirectory संपत्ति बीटा 4 में urls(for:in:) उपयोग करने के लिए बदल रहा है की आवश्यकता होगी:।

static let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] 

(ध्यान दें कि मैं Swift API design guidelines के अनुसार अपनी संपत्ति के नाम lowerCamelCase कर दिया है, मैं एक नया उदाहरण बनाने के बजाय FileManager.default का उपयोग करने की भी सिफारिश करेगा।)

आपपर एक नज़र डाल सकते हैंएपीआई नामकरण परिवर्तन है कि => एक नया मूल URL पर एक पथ घटक जोड़कर बनाया यूआरएल रिटर्न स्विफ्ट 3.

4
func appendingPathComponent(String) 

में जगह ले लिया है देखने के लिए।

static let archiveURL = documentsDirectory?.appendingPathComponent("meals") 

यदि यह निर्देशिका है:

func appendingPathComponent(String, isDirectory: Bool) 

=> एक नया मूल URL पर एक पथ घटक जोड़कर, स्लैश के साथ करता है, तो घटक एक निर्देशिका नामित किया गया है द्वारा किए गए यूआरएल देता है।

static let archiveURL = documentsDirectory?.appendingPathComponent("meals", isDirectory: true)