When to use a struct, uobject, or actor?

Currently, I have a game state which has an array of uobjects called items. The items are constructed and then initialized from the data of an item with struct from a data table row and then added to the array in the gamestate. The row from the data table is determined from a child from a base pickup actor which has a name.

Should I just make the uobject Item; an Item actor base class? With this implementation I would initialize each individual actor with the tablerow struct in the construction script, then add it to the array of actors in gamestate when player pawn bag overlaps the actor and destroys it, uh? destroys it? (I think destroying an actor when adding to an array is a bad design smell, or I am just unexperienced with UE4)

Should I just keep the uobject Item; a struct and not initialize it to a uobject? I had this implemented before I changed to uobjects but when I had a characterStats struct instead of uobject I felt wrong doing calculations on the character stats with all the pins coming off.

Would my choice of data type be any different making character data instead of item data? Can actors just be data even though they are not present in the level? I think I would run into problems with one implementation over the other. I wish I had a better understanding of UE4 object types to better implement a game design.

I tried re-implementing my game with structs only and things didn’t work out when calculating and updating data. I went back to my uobject implementation.