swift 使用for循环从函数返回多个项

hgc7kmma  于 2022-12-10  发布在  Swift
关注(0)|答案(1)|浏览(113)

我为糟糕的标题道歉,任何改变都是受欢迎的。
我有一个函数,检查安装的外部驱动器,并打印他们,这工作完美,因为for循环循环打印出每一项。
我希望它也返回这些连接成字符串或数组的驱动器。问题是,虽然它会完美地打印它们,但它只会返回最后一项(因为这显然是循环结束时剩下的一项)。
任何帮助,让它返回所有安装的磁盘(而不仅仅是最后一个)将是美妙的。

func checkMountedDrives() -> String
{
    var volumeURLString = "unkmown"
    if let session = DASessionCreate(kCFAllocatorDefault) {
    let mountedVolumeURLs = FileManager.default.mountedVolumeURLs(includingResourceValuesForKeys: nil)!
    for volumeURL in mountedVolumeURLs {
        if let disk = DADiskCreateFromVolumePath(kCFAllocatorDefault, session, volumeURL as CFURL),
            let bsdName = DADiskGetBSDName(disk) {
            let bsdString = String(cString : bsdName)
            print("💾volumes ", volumeURL.path)
            volumeURLString = String(volumeURL.path)          
        }   
    }    
}
    return volumeURLString // this only returns the last item, I want them all!
}

对于一个新的(和非常老的)程序员的任何帮助都会感激不尽。

31moq8wy

31moq8wy1#

func checkMountedDrives() -> [String] {
    var volumeURLString: [String] = []
    if let session = DASessionCreate(kCFAllocatorDefault) {
        let mountedVolumeURLs = FileManager.default.mountedVolumeURLs(includingResourceValuesForKeys: nil)!
        for volumeURL in mountedVolumeURLs {
            if let disk = DADiskCreateFromVolumePath(kCFAllocatorDefault, session, volumeURL as CFURL),
                let bsdName = DADiskGetBSDName(disk) {
                let bsdString = String(cString: bsdName)
                print("💾volumes ", volumeURL.path)
                volumeURLString.append(String(volumeURL.path))        
            }   
        }    
    }
    return volumeURLString // this is all!
}

如果您需要bsd和卷,请使用struct
第一次

相关问题