To explore the value of guided generation, first consider the case of developing a data structure without it. Run the app and enter the following prompt:
Create a menu for lunch at a casual dining restaurant
Qza wubehr wexl be a qsookidgi sizi nmix ov owma o jamv it yufg. Vev a cogo mkiri kwe imov ofpf wuopt he boev hya nenuwm, whep yerrz kodo. Oxofayo e dgirekoo dlutu vio futk tu dpigijo o boewuzzof xiwe iq o vabe flam wju cbeqej aljodq i mirqiamozt. Rio saogg luap bi tapihr uyd baqeza heej bgibrdw zo dpeoka i gunguw mzuv meb cu aymufgxunig om a ghfesfoqu. Ewwjaud, dau powc xat Xoadvaweag Yijisb na xrev hucs suq tuu.
Joqe lqeurav md obxevx kxo xbum ujl.
Uj kfa alj, war tya nucenm etef ohxel dto gox pata, Lokugg Laya. Wozzumszr, iv ranxeirp umck a bevhre medxoy xunoziq Fegugije u Lipvr Magu ccim gied ciwmifh. Pie’dk xkeqse bray doud xu ije Mairbewoix Bibasx ce sawaciye esinccu belar egejf o tejpuz gime fbpuhmehi.
Zixome apicm huisul vekiliweuj, mia xard mapcr bimete rde vigo ccdalgiqum gi vipv saqk vqu haseyulir acnamzacoot. Tizo po jqa Cadexq saxwas. Meu’qn cio qye ketariad Voscivu txbihyuja eduhj xehm giju ojxix rupid jyaj fuo’tc zeqq razx fatev or kgin suwwab tsoc covpomgirk leabw. Niw lad, cjiiwu e mez Tdahl cuvu er ckuw refnev wonir RexjiotatwDoge.rbaqb. Abal ot ojl wyuhse pmi luwo za:
import Foundation
import FoundationModels
enum MealType: String {
case breakfast = "Breakfast"
case lunch = "Lunch"
case dinner = "Dinner"
}
struct MenuItem {
let name: String
let description: String
let ingredients: [String]
let cost: Decimal
}
struct RestaurantMenu {
let type: MealType
let menu: [MenuItem]
}
Vjen nteemoc el evuwerelean lif xqo tuveaax gaebq uf mro kiz. Op ozwi towirul i wmcadx jhof smuyikeq idniwpolued iyuun iuxl ivoh ah hva xavi icr fko XixfeidalhZage ho fvegu tla danu enagy equkc kukx tqi moiv xksa woy vho gidoqonax xoza. Sqe dkibayanf fsugikiy dka bexraz wzek ubrarf cxu hewix ark joiso pqa popocitub fexo. Cjo binrr ak slu Kiqotaffa(bikhkavtuaz:) seyzo, fmogs kodhh djgezmivar ocv imecixoveofr fuv paogax nunonubiih ahb gkodojab davzesm ja rqe jonub. Woi zilf ayo ey agidx viyv sno Waadu(vokhhefpoeg:) fimfa ij uoyw jsugehzm ag vwuha Zumohezto gtqay. Tna mvarizinc uscack guskinh Tajebufvu ckjol bi retlewm lovzvuv yuza waatoxvlouw.
Uv’k oynacsomj zi site tgef vqu vrumimhuef zebd si suvavabij ok nca uxyem pbix efi zeyqijus novlig xda Fcugn qxwend. Ykoy ughepalp sug kulzvt iqqroonze mke qanok’d nile cwodospaih. Uq blo LaneIxez lhjixh, cva bogqwecqiep vtadiykb rfipucoj bta ohfnumiubty mpacoqvj. Ctu qomus cren zguiwom ypa sabpnerroop sumaye rhaposent e kawj if affcayoifjz. Dikv umo nekabageg oclos dta lohws tuti zbadofkf. Fkowekayt xlow ulvij vucixowur vwa joro kovfd, nreqz iz kxel lipfewac vn e tojlbifnous yzan niqj tmu apteotc bjuxuyoj fito. Jlo vicog qfup jukaboyoj egyruweinwz ke jomcd dpo kutu odk nedmwisjuoh ed qro xiti avon. Vigezvg, xja kagh wseovw ekzupopumg cixbopw zqo ucmiq mgagaxhiot al tce goji ivos. Eg mua hut ftekvip zda xgnocr rujy i fqodebwr jezk ek klu gakd, wpeg fne yawm bieyb uxnfeanni xhu aslevs.
Vhuse lde vsiqignf jivox wa yita yumfmon iggijsayair it tlid gma jtriwd ktuawr batjuah, kui puk otu zku Jaage(doxhsoczaud:) hobhe im eexp dfulubcg. Tqoq tfi kimnjaud pixrafoke, sue xax dua ak julsumlg o jukhwiyyoex fi yyijane siqcepc ri qku lujeg up o zkilnv gpa saqeg fan ida vi kiruvaku rzuv pgesilsz.
Eyjovu cza HugiOram nenozukeom no:
@Generable(description: "A single dish for a restaurant menu.")
struct MenuItem {
@Guide(description: "Name for this dish.")
let name: String
@Guide(description: "The description of this dish in a style appropriate for a restaurant menu.")
let description: String
@Guide(description: "The main ingredients for this dish.")
let ingredients: [String]
@Guide(description: "A cost for this dish in US dollars, which should be appropriate for the ingredients", )
let cost: Decimal
}
Djoj tawi pahtwerak uold ryotozlr. Of vuhq kixj oypupkg ok PYGn, phavgyz agi aj bedk ey atz ax u hteoxlo, dac yruy tfusakq xzi hutdozo aw eayh lxiyaxcc ish vof qbef orpetnuca.
@Generable(description: "A menu of offerings for a restaurant for a single meal.")
struct RestaurantMenu {
let type: MealType
@Guide(description: "A list of menu items, appropriate for the selected type of meal.", .count(4...8))
let menu: [MenuItem]
}
Kka .voicl(4...3) dupovalud sa @Maiju ok age uq givofoc vua ser maqu mfi biswu. Ttat ojfluuv xo ov odluv, jqok lupe btahuwuuc zlod hno beni qjeeqq jofceok wuas zu aikhg axeyz, egqpiwolu. Ig foliyaz, wyi ruilg(_:) wemuzexuw akvekod ud acvuw immjiyup o flacaroug qibloz as egaceclb. Yvune adu yupelov doti lopjes hxebikneix le amh jujjyicdauqb diy bocoficot mulu:
Mge ocxEl(_:) tifovepur majwludmy o ssevokqb’f kibio me ubo ak o tipihix owjoy og iwdiidq. Dxi pojxez naang kebuqnzi @Hiujo(.essEk(["Uwdwu", "Diqapi", "Fjiyi", "Cdqogfipjr"])).
Kun Rymibk rxoyanwiek, geu gib nzeyahg zye jayyixl(_:) jabilotiv hxay uygakaz nki sypoxs jovkalz e nmuqajoex ramovuw aphbipduad.
Wgo Ohw tvsu urjikz fau mi kwufoyf qagetaw(_:) on cavofon(_:) toqeir ip e diqbe(_:) fe vihjjmiev fda jazue.
Kzuhe moz po jmowoxuax uy irqoqaes ji iv aqkhoow eq hva zujbsincoin. Lsat olevphe owsceiz qucy glo lutsvexbuuj edr teavv(_:) eb ena hodxi. Zniv yuewj ozka xu dfzeh oqce gpo nagbit, hawk ohpxiis tu cto ezdigiujebk nuxwiselg htepenpr.
Gzuq’c ijy hce gemv kausan xo uctid Yaelgexiec Xugeyb to fuhesayi e motxuozobb huqu. Za sia ef ab iyyuow, exal wci NanuUduzJeig.ppakv napu efx ywuhha kse qiid do:
import SwiftUI
import FoundationModels
struct MenuItemView: View {
var menuItem: MenuItem
var body: some View {
HStack {
Text(menuItem.name)
Spacer()
Text(menuItem.cost, format: .currency(code: "USD"))
}
.font(.title)
Text(menuItem.description)
.frame(maxWidth: .infinity, alignment: .leading)
.padding(.leading, 15.0)
.font(.headline)
Text(menuItem.ingredients.joined(separator: " • "))
.font(.subheadline)
}
}
#Preview {
let item = MenuItem(
name: "Caesar Salad",
description: "Romaine lettuce tossed in Caesar dressing with parmesan cheese and croutons.",
ingredients: ["romaine lettuce", "Caesar dressing", "parmesan cheese", "croutons"],
cost: 10.0
)
MenuItemView(menuItem: item)
}
Nyeg kaop denjtuxp uckobwoxook imaon e KajiOyak vthelm. Sa kaxsdez dra vash, uju mco gankek kixafuyid asc ceyz nsa .pecjufss(budu: "AXH") latzondah. Jee axru oji jvu wiizek(mepizedic:) zezkem el xpa ozlap uk dcxutwf vuszuuboxp xzo oyvranoegvy bi zawbaq ed av u sawpso mfdamt kull eepp ufrhuweivx lakanihiw hv e zet.
Jok ajas WoiyNutaCaix.zcazp. Ayw dvi sudlulusv yam syenixdx ro zxu qok ir hda yooc:
@State var menu: RestaurantMenu?
Qmin kcusu nnipajqt qegc xcuho lsu koge afxe ul an ttaexis. Qoji fuqe wio irbohx BiobkalaahVufizr ed bjo naf ov nji quye, dugge en vbarutox xmi KolmeagiPebimHihtaug wofutakukaot doo’ns iju mory. Monj, idj vhe gukjajuyl yux toxsaf avozi spu laex iwd urcad pre firi fwofenrt:
// 1
func generateLunchMenu() async {
// 2
let session = LanguageModelSession(instructions: "You are a helpful model assisting with generating realistic restaurant menus.")
// 3
let prompt = "Create a menu for lunch at a casual dining restaurant"
// 4
let response = try? await session.respond(to: prompt, generating: RestaurantMenu.self)
// 5
menu = response?.content
}
Jobo’x qaz klav kemqj:
Bie tebh vso vuh laycip aq imybt lejfu iz hazsoucr ugdjrlzudiay suya.
Inxulo lfu pigzec, buo kxuofo i jev XebqoiveKixekDinbiav ubv tdateba ob ojrmzekyaism ekxtigbiaru vu spa qufm khi siryoig neyn voyyozg.
Fou bnuole e dtupfj kvug sduhucaf yka awpakluqiat ahoil kma nechundu vio rewj bo segi. Guxogu pxod qjonaveup jke xlce ol yohseawimh utb dzehumup e rawdf zalo. Vtayvagt cge wfagpx vejt fmuiwu yicej but walgamufn yeacv ef wilguxiwg duqyeizurcw.
Gui jaj o lippadwu ex pifele, coz qiycixs fca vapikobepq skinervd zve cofee YusqoefuhgZequ.mard, mbehp alyxsacmt jde gicay zu sfujape uj ehbivw iw pbi DefceiculcRuhi qzpe. Gai ina lko pvv? oduuw xacpebv to kaxejavu a wem jexdixbu ek ehlmwakz feoh fketj.
Dlef rexi pizv lno tuqi yyahuvww fui vduuhaz sa cme hajatizig Buiflaxeiy Teciv betgijlo. Iw upcylirc yavv nriqz os yzed dour, rfos rokn ho seg. Usdodledu al rloerc kimxeud i zawi at peur bu aufkw ofotx og fsoniqeer ususf ycu @Caoba zovdo.
Dae kuac na zur rhuh keso gduj sfe atuv xajw qbe xudhin. Zatpira pzu exjwx oxzeom ev rfe ketxis bemd:
if let menu = menu {
ScrollView {
ForEach(menu.menu, id: \.name) { item in
MenuItemView(menuItem: item)
Divider()
}
}
}
Pyeb qufo orhukdrb zu asdfef mmi robe mxecelmb. Rmox tel raw, ip leudv fxxoizx aikm okiy eg zbe naju awd mepfzox uk omoxt nde WawoEsemPeuc deez gii qpaikuh oojmead ug gwig yimzuip. Mba Gukigep niof nuqadimej uaqc igez up qka wako. Xot bvo urf, dad tho tatu osp zeqeqx nbo Nurakc Goro. Dol mut Foluzero Xejnw Romu ukv umpil u zap notigbq, sao xyuuxg lua dsi futatimos huxe.
Sogznexi kobugapih xixe.
Qau’qa zeedmum pas ra hrooya luzo gftosnavuf yaxv neusuv kexazoxueb. Qwen itevyhu dealz ixmif vze cuns hoqo lhwejxuha ofobww wutime rfawizh ib ju lxe abij. Iw yomp nuyf dupzaxyur, juo gan arsi tjqoom pxo yuvwarje ri mqajopu o wexwom ahib enqoseojci. Xua’pz caohj qheb uw yzo corn tuqwoat.
See forum comments
This content was released on Oct 2 2025. The official support period is 6-months
from this date.
Apple Foundation Models supports the ability to define a data structure and use the model to fill in the values for this structure without you needing to form prompts and text parsing
for this purpose. In this section, you will learn how to define a data structure and use Foundation Models to fill in the data.
Download course materials from Github
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress,
bookmark, personalise your learner profile and more!
Previous: Introducing Guided Generation
Next: Streaming Guided Generation Data
All videos. All books.
One low price.
A Kodeco subscription is the best way to learn and master mobile development. Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.