Does anyone know if it is possible to do the following in Swift 3.x? (I’ll 
describe the issue abstractly first, then give the use-case.)

Consider two modules: A and B. A could be either the main module of an 
application or an embedded framework. B is a different embedded framework.

Now A contains an public extension of class X which contains a function f(). 
Inside B, there is a reference to X.f(). Now what I want to do in f() is to 
access information (a module name or bundle name or bundle ID or something) 
that allows me to construct a Bundle object referring to B, without f() having 
any external knowledge of the organization of the application.

The use-case I’m thinking about is a localization extension of String that 
works in a multi-framework application architecture without requiring the 
caller to specify the name of the framework and/or module.

I.e., I want to write

        extension String {
                func locate() -> String {…}
        }

and put this extension into framework “A”. Then, from framework “B”, I want to 
use this function from within a function f() and [somehow] figure out from the 
runtime what the bundle of “B” is, so that I can use it’s localized strings 
file.

I understand that from within the locate() method, I can use #function and from 
it, parse out the module name of “A” and then use the correspondence between 
module names and framework names to figure out the bundle of “A”. BUT what I 
want here is the bundle resource for “B”, not “A”.

Thanks,

Rick Aurbach

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to