枚举Bundle中的sks文件



我想列出捆绑包中的.sks。它们是我比赛的水平。我只想通过丢弃其余的.sks来知道捆绑包中有多少级别我试过这个

let listSKS = Bundle.main.path(forResource:".//Stage1", ofType: "sks")
print(listSKS)

返回->("/private/var/containers/Bundle/Application/2B72AD87-E6FE-45FF-9DCC-AB0F27F2F353/Madness Jumping.app/./Stage1.sks"(

let listLevels = GameScene(fileNamed: ".//Stage1")
print(listLevels)

返回->可选(名称:"阶段1"帧:{{-896,-414},{1792,828}}锚点:{0.5,0.5}(

let listSKS2 = Bundle.main.path(forResource:".//Stage*", ofType: "sks")
print(listSKS2)

返回->无

let listLevels2 = GameScene(fileNamed: ".//Stage*")
print(listLevels2)

返回->无

您可以使用"阶段";如下所示:

let filePrefix = "Stage"
if let fileURLs = Bundle.main.urls(forResourcesWithExtension: "sks", subdirectory: nil) {
let filteredArray = fileURLs.filter{ $0.lastPathComponent.range(of: "^(filePrefix)", options: [.regularExpression, .caseInsensitive, .diacriticInsensitive]) != nil }
print("Filtered Array",  filteredArray)
}

您应该使用urls(forResourcesWithExtension:)而不是

let listSKS = Bundle.main.urls(forResourcesWithExtension: ".sks", subdirectory: nil)

只获取文件名:

if let listSKS = Bundle.main.urls(forResourcesWithExtension: ".sks", subdirectory: nil) {
let files = listSKS.map(.lastPathComponent).filter({$0.prefix(5) == "Stage"})
print(files)
}

最新更新