[swift-evolution] [Proposal] Enum string interoperability with Objective-C and Swift

Jeff Kelley slaunchaman at gmail.com
Thu Jan 5 12:47:55 CST 2017


Since it’s still common to see prefixes in use in Objective-C, I wonder if
we could add that with a new attribute:

@objcprefix(JRK) enum City: String {
case NewYork = "New York"
}

Would then appear in Objective-C as:

typedef NSString * JRKCity;
static JRKCity const JRKCityNewYork = @"New York";

It’s a minor tweak, but would help especially with mixed-language source
code where the Objective-C code is still prefixed.


Jeff Kelley

SlaunchaMan at gmail.com | @SlaunchaMan <https://twitter.com/SlaunchaMan> |
jeffkelley.org

On Wed, Jan 4, 2017 at 5:51 PM, Derrick Ho via swift-evolution <
swift-evolution at swift.org> wrote:

> The underline can be omitted. To remain more consistent.
>
> enum City: String {
> case NewYork = "New York"
> }
>
> typedef NSString * City;
> static City const CityNewYork = @"New York";
>
>
>
>
> On Wed, Jan 4, 2017 at 2:22 PM Rod Brown <rodney.brown6 at icloud.com> wrote:
>
>> I'm not part of the core team, of course, but I like this change in
>> principle.
>>
>> My one concern in this case would be choosing a naming convention for the
>> back port that makes sense both ways. The naming convention you propose (
>> EnumName_EnumCase) seems inconsistent with the current import of strings
>> from Obj-C to Swift. Could we find a way to unify them?
>>
>> On 31 Dec 2016, at 4:15 am, Derrick Ho via swift-evolution <
>> swift-evolution at swift.org> wrote:
>>
>> I'm trying to revive an old thread. I'd like to hear from the community.
>>
>> Can we make a swift enum string interoperable with Objective-C?
>>
>> Currently NS_STRING_ENUM ports from objective-c to swift but not the
>> other way around.
>>
>> I feel that if you can go one direction you should be able to go back.
>>
>> @objc
>> enum City: String {
>> case NewYork = "New York"
>> }
>>
>> Make this available as a global string in objective -c ?
>> On Wed, Nov 23, 2016 at 5:55 AM Derrick Ho <wh1pch81n at gmail.com> wrote:
>>
>> I think enum strings should gain better interoperability with swift.
>> Something like this: enum City: String {     case NewYork = "New York" }
>> This can be ported over to Objective-c like this: typedef NSString * City;
>> static City const City_NewYork = @"New York";
>>
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>
>>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170105/b638ea15/attachment.html>


More information about the swift-evolution mailing list