2014-06-10 5 views
6

में enumeratorAtUrl का उपयोग करके NSFileManager से एक निर्देशिका गणनाकर्ता को वापस करने के साथ समस्या मैं NSFileManager विधि enumeratorAtUrl से NSDirectoryEnumerator ऑब्जेक्ट को वापस करने का प्रयास कर रहा हूं। यह एक संकलक त्रुटि में परिणाम: Cannot convert the expressions type 'NSDirectoryEnumerator!' to type 'NSDirectoryEnumeratorOptions'स्विफ्ट

let url:NSURL = NSURL(fileURLWithPath: "/") 
var keys:Array<AnyObject> = [NSURLNameKey, NSURLIsDirectoryKey] 
var manager:NSFileManager = NSFileManager.defaultManager() 
let enumerator:NSDirectoryEnumerator = manager.enumeratorAtURL(url,includingPropertiesForKeys: keys, options: 0, errorHandler: nil) 

यह Obj सी में काम करता है, लेकिन नहीं स्विफ्ट .. किसी और को इस मुद्दे का सामना करना पड़ा है?

+0

नोट: enumeratorAtPath पद्धति अभी भी काम करता है सामान्य रूप से के माध्यम से एक NSDirectoryEnumerator लौटने। –

उत्तर

9

इस प्रयास करें:

let enumerator:NSDirectoryEnumerator = manager.enumeratorAtURL(url, includingPropertiesForKeys: keys, options: NSDirectoryEnumerationOptions(), errorHandler: nil) 

या संक्षेप में, बजाय "0" की NSDirectoryEnumerationOptions() में गुजरती हैं।

"0" वास्तव में उस गणना का सदस्य नहीं है जिसे वह ढूंढ रहा है।

1

@ केंडल का उत्तर ज्यादातर मामलों के लिए बिल्कुल सही है, लेकिन यदि आपको गणक के व्यवहार को समायोजित करने की आवश्यकता है, तो यहां कुछ उदाहरण दिए गए हैं।

छिपी हुई फ़ाइलें छोड़ प्रगणक कॉन्फ़िगर करें:

let enumerator = manager.enumeratorAtURL(url, includingPropertiesForKeys: keys, options: .SkipsHiddenFiles, errorHandler: nil) 

आप कई विकल्प हैं, तो आप "या" एक साथ उन्हें निर्धारित करने की जरूरत है:

let options: NSDirectoryEnumerationOptions = .SkipsHiddenFiles | .SkipsPackageDescendants 
let enumerator = manager.enumeratorAtURL(url, includingPropertiesForKeys: keys, options: options, errorHandler: nil) 
5

स्विफ्ट 3.1+

let url = URL(fileURLWithPath: "/") 
let keys: [URLResourceKey] = [.nameKey, .isDirectoryKey] 
let manager = FileManager.default 
let options: FileManager.DirectoryEnumerationOptions = [.skipsHiddenFiles, .skipsPackageDescendants] 
let enumerator = manager.enumerator(at: url, includingPropertiesForKeys: keys, options: options, errorHandler: nil) 

स्विफ्ट 2.0

कोई विकल्प:

let enumerator = manager.enumeratorAtURL(url, includingPropertiesForKeys: keys, options: [], errorHandler: nil) 

एक विकल्प:

let enumerator = manager.enumeratorAtURL(url, includingPropertiesForKeys: keys, options: .SkipsHiddenFiles, errorHandler: nil) 

एकाधिक विकल्प:

let options: NSDirectoryEnumerationOptions = [.SkipsHiddenFiles, .SkipsPackageDescendants] 
let enumerator = manager.enumeratorAtURL(url, includingPropertiesForKeys: keys, options: options, errorHandler: nil)