Currently ValueObject::GetValueAsUnsigned(...) calls ResolveValue(...) and then afterward marks the scalar as unsigned.
This approach fails when dealing with 1 bit BOOL bit-fields in ObjC since the call to scalar.ExtractBitfield(...) will end up sign extending the value. So in the case of a bit-field with a value of 1 we would instead end up with a value of 255 (since BOOL is a just unsigned char).
I adjusted the handling to check if the scalar is unsigned in ResolveValue(...) and handle accordingly.
That still makes the value unsigned and prints 255 instead of -1. Something like: int64_t value = real_guy_sp->GetValueAsSigned(0); should do the trick.