Can't get valid IPropertyHandle for Child Uproperty

I’m not sure if this is the same problem, but sometimes IPropertyHandle::GetChildHandle does not work for me either. There are two solutions which I have come across:

// 1. Use DetailLayout instead of the original property handle
DetailLayout.GetProperty(FName("PropertyName"), UBaseClass::StaticClass());

// 2. Iterate through properties instead of name lookup
uint32 NumElements;
ItemHandle->GetNumChildren(NumElements);
for (uint32 ElemIndex = 0; ElemIndex < NumElements; ElemIndex++)
{
auto ElemHandle = ItemHandle->GetChildHandle(ElemIndex);
if (ElemHandle->GetProperty()->GetFName() == GET_MEMBER_NAME_CHECKED(UBaseClass, PropertyName))
	{ /* do stuff */ }
}

Source for solution #1