xivapi-swift

一个简单的 Swift 客户端,可以轻松地使用 xivapi

安装

Swift Package Manager

  1. Xcode -> 文件 -> 添加 Package Dependency(包依赖)
  2. 粘贴此仓库 URL: https://github.com/Eisenhuth/xivapi-swift.git
  3. 添加 Package(包)

用法

//option 1 - latest schema, latest version - unverified
let client = xivapiClient() 
//option 2 - providing your own schema/version
let schema = "exdschema@9942dd96c70dfbba55bbc4280da144e5cb410737-2024.11.06.0000.0000"
let client = xivapiClient(schema: schema, version: "7.15")
//option 3 - using the schema/version this version of the package was verified against
let client = xivapiClient(automaticallyPin: true)

提示

强烈建议指定版本和 schema(模式) - 或者使用上面提到的自动固定版本,以使用该包验证过的 schema/版本。

常用 endpoints(端点)

let item = await client.getItem(39727) //Grade 8 Tincture of Strength
let itemMinimal = await client.getItemMinimal(39727) //only contains Name, Description, Icon
let recipe = await client.getRecipe(35585) //Recipe: Grade 8 Tincture of Strength
let map = await client.getMap(696) //Thavnair
let trait = await client.getTrait(422) //Enhanced Unmend
let action = await client.getAction(7393) //The Blackest Night

对于很多数据都有扩展,例如 Map.mapPath 来获取纹理路径,或者 TripleTriadCard.imagePath 来获取卡片的artwork(艺术作品)路径。我建议不要太仔细地研究这些路径是如何构建的,那样做会让你陷入混乱。

Sheets(表格)

你可以提供你自己的 Codable 结构体,用于 .getSheet

struct MyCustomItemStruct: Codable {
    let row_id: Int
}
let myItem = await client.getSheet(.Item, id: 39727) as MyCustomItemStruct?
let myItem = await client.getSheet(name: "Item", id: 39727) as MyCustomItemStruct?

或者使用内置的结构体

let ttCard = await client.getSheet(.TripleTriadCard, id: 346) as TripleTriadCard?
print(ttCard?.fields.Name ?? "name") //Zenos Galvus
print(ttCard?.fields.Description ?? "description") //“Did you find...fulfillment?”

Item(物品):Recipe(配方)查找

if let recipeId = await client.getItemRecipes(itemId: 39727)?.first {
    let recipe = await client.getRecipe(recipeId)
    
    recipe?.ingredients.forEach {
        print("\($0.itemId) x\($0.amount)")
    }
}

let entireLookup = await client.getItemRecipeDict() //[ItemId : [RecipeId]]