ProfileService Data Nil

Error
Attempt to call a nil value
Code

local ModulesFolder = script.Parent:WaitForChild('Modules')
local ObjectTable = require(ModulesFolder:WaitForChild('ObjectTable'))
local ProfileService = require(ModulesFolder:WaitForChild('ProfileService'))
local ReplicatedStorage = game:GetService("ReplicatedStorage")

local FolderName = 'stats'
local FolderName2 = 'Knives' 

local GameProfileStore = ProfileService.GetProfileStore('Data3', {
	stats = {
		coins = 1,
		kills = 1,
	},

	Knives = {}, 
	CurrentKnife = "Default",
})

-----------------------------------

local Players = game:GetService('Players')

local ProfileCache = {}

local function OnJoinHandler(player, profile)
	do

		local DataFolder = Instance.new('Folder')
		DataFolder.Name = FolderName

		ObjectTable.TableToObject(profile.Data.stats, DataFolder)
		DataFolder.Parent = player
	end

	do
		local DataFolder = Instance.new('Folder')
		DataFolder.Name = FolderName2

		ObjectTable.TableToObject(profile.Data.Knives, DataFolder)
		DataFolder.Parent = player

		for _, v in ipairs(game.ReplicatedStorage.Knives:GetChildren()) do
			if not profile.Data.Knives:FindFirstChild(v.Name) then
				local newKnife = Instance.new("NumberValue")
				newKnife.Name = v.Name
				newKnife.Parent = DataFolder
			else
				print("knife already got")
			end
		end

	end

	local function CharacterAdded(Character)
		if Character then
			warn('Character Spawned : ', Character.Name)
		end
	end

	coroutine.wrap(CharacterAdded)(player.Character)
	player.CharacterAdded:Connect(CharacterAdded)
end

local function PlayerAdded(LocalPlayer)
	local savedProfile = GameProfileStore:LoadProfileAsync('ID_'..LocalPlayer.UserId, "ForceLoad")
	if savedProfile then
		savedProfile:Reconcile()
		savedProfile:ListenToRelease(function()
			ProfileCache[LocalPlayer] = nil
			LocalPlayer:Kick('Rejoin, still saving from another server.')
		end)
		if LocalPlayer:IsDescendantOf(Players) == true then
			ProfileCache[LocalPlayer] = savedProfile
			print(savedProfile.Data)
			OnJoinHandler(LocalPlayer, savedProfile)
		else
			savedProfile:Release()
		end
	else
		LocalPlayer:Kick('Could not load data. ', os.date('%X %x', os.time()))
	end
end

for _, player in pairs(Players:GetPlayers()) do
	coroutine.wrap(PlayerAdded)(player)
end
Players.PlayerAdded:Connect(PlayerAdded)

Players.PlayerRemoving:Connect(function(LocalPlayer)
	local loadedProfile = ProfileCache[LocalPlayer]
	if loadedProfile ~= nil then
		local Overwrite = {}
		local Overwrite2 = {}

		for k, v in pairs(ObjectTable.ObjectToTable(LocalPlayer[FolderName])) do
			loadedProfile.Data[k] = v
			Overwrite[k] = v
		end

		for k, v in pairs(ObjectTable.ObjectToTable(LocalPlayer[FolderName2])) do
			loadedProfile.Data[k] = v
			Overwrite[k] = v
		end

		print(Overwrite)
		print(Overwrite2)

		loadedProfile:Release()
	end
end)

I believe it is because the profile is nil but it shouldn’t be, before the profile is printed and it works fine.

There was 2 errors in the script, I needed profile.Data.Knives, not profile.Knives and I also needed to use table.find then make the table a object.