The problem is not compiling in itself, but the assumptions that the code makes about the CPU architecture (endianness, pointer sizes, basic data structure alignment etc.). And as far as I know, they are identical between modern ARM and x86 CPUs. This is the crucial factor to allow true platform compatibility — if cross-compiled, your code should be able to work with data snapshots created by a different platform.
And already now you can create apps for iOS and macOS which share most (if not all) of their business logic. Even more, you can use same data structure declarations between CPUs and GPUs (this is what I really love about Metal for example).
Your obj-c code should not be making assumptions about endian-ness. it should be using the data types provided
If you have bit operations that are low level enough to do things that are endian dependent you should have put endian-ness ifdefs in there. If you didn't, now's the time...
It's not an insurmountable challenge. This is stuff people have done many times before with 68k, PPC, MIPS, Alpha, etc. Unless you're doing low level bit operations which is normally banging on hardware directly via assembler or low level C for driver code these days, you should just be able to recompile for the most part.
edit:
oh, you're talking about file storage using your own file types? yeah you might need to do checks there. But that's a file storage problem. Not a compilation or "will my code run" problem. But again, we've been there before. This might be a reminder to newer coders who haven't been through this stuff that you either make an assumption on endian-ness based on file format, or you embed and indicator of the endianness into the file somewhere.