CurrencyScript Not working

Hello Devs, I have this script that will loop through all the items inside a folder and then I want to clone and position them, but the script is not working. It will not spawn the part at all nor position it to its right location.
ServerScript

local StarterZoneCurrency = script.Parent
local SpawnPositon = CFrame.new(-222,58,-28) -- Where I want the items to drop
--local SpawnRandom = math.random()

local StarterZoneCurrencyItems = {
	StarterZoneCurrency["Bag 1"],
	StarterZoneCurrency["Bag 2"],
	StarterZoneCurrency["Coin"],
	StarterZoneCurrency["Gem"],
	StarterZoneCurrency["Chest"]
	-- all the items 
}



for i,v in pairs(StarterZoneCurrencyItems) do -- looping through the talbe
	print(i,v)
	while true do 
		wait(0.2)
		local CloneBag1 = StarterZoneCurrencyItems{1}:Clone()
		CloneBag1.Parent = game.Workspace
		CloneBag1:PrimaryPartCFrame(SpawnPositon)
		-- the script stops working here and the the Bag does not appear

		
		
		

	end

	
end




There is not errors in the script

The code was fix I had to do SetPrimaryPartCFrame

local StarterZoneCurrency = script.Parent
local SpawnPositon = CFrame.new(-222,58,-28)
--local SpawnRandom = math.random()

local StarterZoneCurrencyItems = {
	StarterZoneCurrency["Bag 1"],
	StarterZoneCurrency["Bag 2"],
	StarterZoneCurrency["Coin"],
	StarterZoneCurrency["Gem"],
	StarterZoneCurrency["Chest"]
}

for i, v in pairs(StarterZoneCurrencyItems) do
	while task.wait(0.2) do 
		local CloneBag1 = v:Clone()
		CloneBag1.Parent = workspace
		CloneBag1:SetPrimaryPartCFrame(SpawnPositon)
	end
end

You could also replace pairs() for ipairs() as you’re traversing over an array and ipairs() has better performance/efficiency than pairs(), be mindful though as ipairs() will not work if called with a dictionary passed as an argument to it.