Getting Product Metafield and Usage of [HasMetafieldsIdentifier!]! (iOS SDK and GraphQL related)

Getting Product Metafield and Usage of [HasMetafieldsIdentifier!]! (iOS SDK and GraphQL related)

Ashley-Dube
Visitor
3 0 0

Hi,

I'm trying to get my product metafields using the following code:

```
func fragmentForStandardProduct() -> Storefront.ProductConnectionQuery { return self
.pageInfo { $0
.hasNextPage()
}
.edges { $0
.cursor()
.node { $0
.id()
.title()
.handle()
.descriptionHtml()
.description()
.variants(first: 250) { $0
.fragmentForStandardVariant()
}
.images(first: 250){ $0
.fragmentForStandardProductImage()
}
.metafield(namespace: "custom", key: "myKey") { $0 // Attemping to use this method
.value(alias: "myAlias")
}
}
}
}
```
Creating my Product Object

```
final class ProductViewModel: ProductModel {

typealias ModelType = Storefront.ProductEdge

let model: ModelType
let cursor: String

let id: String
let title: String
let handle: String
let summary: String
let unformattedSummary: String
let price: String
let images: PageableArray<ImageViewModel>
let variants: PageableArray<VarientViewModel>
let metaField1: String

// ----------------------------------
// MARK: - Init -
//
required init(from model: ModelType) {
self.model = model
self.cursor = model.cursor

let variants = model.node.variants.edges.viewModels.sorted {
$0.price < $1.price
}

let lowestPrice = variants.first?.price

self.id = model.node.id.rawValue
self.title = model.node.title
.replacingOccurrences(of: "-", with: " ")
.capitalized
self.handle = model.node.handle
self.summary = model.node.descriptionHtml
self.unformattedSummary = model.node.description
self.price = lowestPrice == nil ? "No price" : Currency.stringFrom(lowestPrice!)

self.images = PageableArray(
with: model.node.images.edges,
pageInfo: model.node.images.pageInfo
)

self.variants = PageableArray(
with: model.node.variants.edges,
pageInfo: model.node.variants.pageInfo
)
self.metaField1 = model.node.aliasedMetafield(alias: "myAlias")?.value ?? "" // Attemping to get that metafield I assigned an alias. I tried assign the key as the alias, however it didn't work
}
}
```

Error Message from xcode

```
Buy/GraphQL.swift:193: Fatal error: field metafield__myAlias wasn't queried
2023-02-05 22:35:40.172892+0200 travSIM[48928:4746891] Buy/GraphQL.swift:193: Fatal error: field metafield__myAlias wasn't queried
```

Working GraphQL query

```
query nodes($ids: [ID!]!) {
nodes(ids: $ids) {
... on Collection {
id
products(first: 50) {
edges {
node {
id
title
metafield(namespace: "custom", key: "myKey") {
value
}
}
}
}
}
}
}
```

I'm learning from the documentation that there's a more efficient manner of getting all my metafields through the use of [HasMetafieldsIdentifier!]!, unfortunetly I'm failing to find a way of using it.

Any guidance would be apprecited, thanx!

Replies 0 (0)