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

Derrick Ho wh1pch81n at gmail.com
Thu Jan 5 18:41:02 CST 2017


Interesting I knew @objc(name) could rename method names; didn't realize
they could be used on enums.
On Thu, Jan 5, 2017 at 6:58 PM Derrick Ho <wh1pch81n at gmail.com> wrote:

> I updated the proposal
>
>
> https://github.com/wh1pch81n/swift-evolution/blob/master/proposals/NNNN-Swift-enum-strings-ported-to-Objective-c.md
>
> And I also posted the question on Reddit.
>
>
> https://www.reddit.com/r/ObjectiveC/comments/5livbi/improve_ns_string_enum/?st=IXJK9UXL&sh=80e8c7d8
>
>
>
> On Wed, Jan 4, 2017 at 2:51 PM Derrick Ho <wh1pch81n at gmail.com> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170106/8baeb66b/attachment.html>


More information about the swift-evolution mailing list