Something else that may help is that projects in a workspace share a build directory and Xcode discovers the dependencies implicitly. I was dubious of this at first, but it seems to work well in practice. In my case, I have a workspace with a few projects that share a core project. Each of these projects is a sibling in the workspace. I build one of the higher-level projects and the core project will be built prior to the higher-level one.
Xcode examines the files in the build directory to discover implicit dependencies. For example,
if one project included in a workspace builds a library that is linked against by another project
in the same workspace, Xcode automatically builds the library before building the other project,
even if the build configuration does not make this dependency explicit. You can override such
implicit dependencies with explicit build settings if necessary. For explicit dependencies, you
must create project references.