2014-10-13 8 views
24

विधि उदाहरण ExxAtPath() नीचे दिए गए उदाहरण में केवल एक तर्क स्वीकार करते हैं।स्विफ्ट फ़ाइल में एक्स्टिस्ट्सएपपाथ (_ पथ: स्ट्रिंग, isDirectory isDirectory: UnsafeMutablePointer <ObjCBool>) -> बूल केवल पैरामीटर स्वीकार करता है

if fm.fileExistsAtPath(result, isDirectory:&isDir) { 

सटीक त्रुटि संदेश है: "अतिरिक्त तर्क" कॉल में डायरेक्टरी है "।

कोई विचार क्या गलत है?

उत्तर

17

कुछ इसे थोड़ा साफ-सुथरा पाते हैं। यह स्विफ्ट 3.

var directory: ObjCBool = ObjCBool(false) 
var exists: Bool = FileManager.default.fileExists(atPath: "…", isDirectory: &directory) 

if exists && directory.boolValue { 
    // Exists. Directory. 
} else if exists { 
    // Exists. 
} 
+2

तकनीकी रूप से यह कास्टिंग नहीं कर रहा है, लेकिन 'init <टी: बूलियन टाइप> (_ मान: टी)' के साथ प्रारंभ करना। – Kirsteins

+0

इसके बारे में सोचते समय आप पूरी तरह से सही हैं, इस पर टिप्पणी करेंगे। –

62

समस्या यह है कि isDirectoryUnsafeMutablePointer<ObjCBool> और UnsafeMutablePointer<Bool> प्रदान नहीं करता है। आप निम्नलिखित कोड का उपयोग कर सकते हैं:

var isDir = ObjCBool(false) 
if NSFileManager.defaultManager().fileExistsAtPath("", isDirectory: &isDir) { 

} 

if isDir.boolValue { 

} 
+0

में यह निर्देशिका मौजूद है या नहीं, यह चाल है। धन्यवाद! स्विफ्ट 3 बूल (isDir) पर –

+7

मेरे लिए काम नहीं कर रहा है। isDir.boolValue ठीक काम करता है। धन्यवाद –

+3

स्विफ्ट 3 –

1

है यह

func isDirectory(path: String) -> Bool { 
    var isDirectory: ObjCBool = false 
    NSFileManager().fileExistsAtPath(path, isDirectory: &isDirectory) 
    return Bool(isDirectory) 
} 
0

Swift3

में
var isDirectory:ObjCBool = true 
var exists = FileManager.default.fileExists(atPath: cachePath, isDirectory: &isDirectory) 
+0

हैलो, और StackOveflow में आपका स्वागत है। कृपया अपने उत्तर में कुछ स्पष्टीकरण जोड़ें, क्योंकि कोड-केवल उत्तर आदर्श नहीं हैं। – Chaithanya

0

आप एक विस्तार के रूप में निम्नलिखित कोड का उपयोग कर सकते है। यह जांचने के लिए कि स्विफ्ट 4.0

import Foundation 

extension FileManager { 

    func directoryExists (atPath path: String) -> Bool { 
     var directoryExists = ObjCBool.init(false) 
     let fileExists = FileManager.default.fileExists(atPath: path, isDirectory: &directoryExists) 

     return fileExists && directoryExists.boolValue 
    } 
} 
संबंधित मुद्दे