<div dir="ltr">Hi Jordan,<div><br></div><div>Thanks for the response. </div><div><br></div><div>I think #2 is the big one here. It includes the .h files in the generation. </div><div><br></div><div>For #1 and #3, I have the generated headers in a public scope and imported in the umbrella headers but unfortunately that would mean all the base protocol buffer headers such as GPBProtocolBuffers.h and all headers that imports need to be public and included in the umbrella header which doesn&#39;t make sense because I don&#39;t want to expose the base Protocol Buffer headers, only the DTO objects I have generated. I think I have just hit a very specific case here where I&#39;m trying to use inflexible, generated objective-c headers in a Swift Framework. </div><div><br>Thanks,</div><div>Vic</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 26, 2016 at 6:14 PM, Jordan Rose <span dir="ltr">&lt;<a href="mailto:jordan_rose@apple.com" target="_blank">jordan_rose@apple.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Hi, Victor. The particular things I&#39;d look at are<div><br></div><div>- Make sure the protobuf-generated headers end up in the final &quot;Headers&quot; folder of your framework. (You may need to add a custom &quot;Copy Headers&quot; build phase, not sure.)</div><div>- Make sure your all #imports use the angle-bracket style: &lt;MyFramework/GPBProtocolBuffers.h&gt; rather than &quot;GPBProtocolBuffers.h&quot;.</div><div>- Make sure your umbrella header imports all of the generated headers you want to be visible from Swift. (You can also do this with a <i>custom module map,</i> but this way is simpler.)</div><div><br></div><div>I&#39;m guessing it&#39;s #2 that might be some trouble. I&#39;m afraid any issue there might have to be taken up with the ObjC protobuf folks.</div><div><br></div><div>Hope that helps,</div><div>Jordan<br><div><br></div><div>P.S. The related problem of &quot;this should just be an implementation detail of my framework; why is it in my umbrella header?&quot; is something we know is an issue, but which needs a bit of design work to get right. (Both the compiler and the debugger need to know what they can and can&#39;t assume about a framework.)</div><div><br><br><blockquote type="cite"><div><div class="h5">On Jan 25, 2016, at 15:14, Victor Leong via swift-users &lt;<a href="mailto:swift-users@swift.org" target="_blank">swift-users@swift.org</a>&gt; wrote:<br><br>Hey everyone,<br> <br>I&#39;m running into a very specific case right now and I&#39;m wondering if anyone has any experience with this situation.<br> <br>I have a Swift project that is using a custom Swift framework that I created. The Swift framework contains a bunch of public objects that can be used by the projects that import this framework.<br> <br>I now want to change those public objects to be defined and generated by Google Protocol Buffers. Currently, Google&#39;s supported languages only has Objective-C and not Swift for iOS classes so I have generated a bunch of Objective-C classes. This is where the problem comes in.<br> <br>If I want to use the Objective-C classes in Swift inside and outside of the Framework, I need to include the generated class headers into the framework&#39;s umbrella header. In Xcode 7.1 and above, the Swift compiler has become very strict and will not accept non-modular headers. I&#39;ve made all the generated classes public but their imported classes all need to be public as well which also need to be made public, and since this is the protobuf Framework, this is made much harder.<br> <br>eg. #import &quot;GPBProtocolBuffers.h&quot; //This has to be made public and everything GPBProtocolBuffers.h has to be modular etc.<br> <br>I need my generated Objective-C classes to be made public and accessible to everything that imports that framework I&#39;ve created. Has anyone come across this before and have a reasonable solution?<br> <br>Summary:<br><div><span style="white-space:pre-wrap">        </span>• Have a Swift project using a Swift framework&#39;s public objects.<br></div><div><span style="white-space:pre-wrap">        </span>• Changed the framework&#39;s objects to Google Protocol Buffer generated Objective-C classes.<br></div><div><span style="white-space:pre-wrap">        </span>• The Objective-C classes have to be added to the umbrella header so Swift can access them.<br></div><div><span style="white-space:pre-wrap">        </span>• Swift compiler complains about inclusion of non-modular classes.<br></div> <br>Thanks,<br>Vic<br></div></div>_______________________________________________<br>swift-users mailing list<br><a href="mailto:swift-users@swift.org" target="_blank">swift-users@swift.org</a><br><a href="https://lists.swift.org/mailman/listinfo/swift-users" target="_blank">https://lists.swift.org/mailman/listinfo/swift-users</a><br></blockquote><br></div></div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><span style="font-size:12.8px">Thanks,</span></div><div><b style="font-size:12.8px">Victor Leong </b><span style="font-size:12.8px">|</span><b style="font-size:12.8px"> Software Developer</b><br></div><div><a href="mailto:victor.leong@visiercorp.com" target="_blank">victor.leong@visiercorp.com</a></div><div><br></div></div></div></div></div></div></div>
</div>