StoryBoard의 Identifier 지옥을 해결하는 SBConstants



소개



StoryBoard에 의해 View를 만들어 가는 작업은 매우 편리하게 되었습니다.
Property나 Action을 코드에 매핑하는 것도 드래그&드롭으로 간단하게 실시할 수 있습니다.
하지만 Identifier는 StoryBoard에서 설정한 문자열을 플러그러머가 오자 없이 코드에 기술해야 합니다.

그래서 SBConstants 을 이용하면, 설정한 Identifier 로부터 자동적으로 정수 코드를 작성해, 오자나 정수화의 작업 (지옥)으로부터 개방됩니다.

실행 환경


  • Xcode 6.1.1 (6A2008a)
  • cocoapods 0.35.0
  • sbconstants 1.0.0

  • 사이트


  • Github htps : // 기주 b. 코 m / 파 루 사무에 ls / SB 곤스 탄 ts
  • Blog ht tp // // 파 l- 사무에 ls. 코 m/bぉg/2013/01/31/s와 ry 보아 rd-곤 s단 ts/

  • 설치



    루비 gem으로 설치합니다.
    $ gem install sbconstants
    

    사용법



    아래 도움말입니다.
    $ sbconstants -h
    Usage: DESTINATION_FILE [options]
        -p, --prefix=<prefix>            Only match identifiers with <prefix>
        -s, --source-dir=<source>        Directory containing storyboards
        -q, --queries=<queries>          YAML file containing queries
        -d, --dry-run                    Output to STDOUT
        -v, --verbose                    Verbose output
    

    사용 예 (ObjC)



    ht tp // // 파 l- 사무에 ls. 코 m/bぉg/2013/01/31/s와 ry 보아 rd-곤 s단 ts/

    미리 PASStoryboardConstants.(h|m) 파일을 Xcode에 수동으로 추가해 둡니다.
    $ sbconstants MyApp/Constants/PASStoryboardConstants.h --source-dir MyApp/Storyboards
    

    (위의 명령을 build phases로 설정하면 빌드별로 업데이트 할 수 있습니다)

    PASStoryboardConstants.h
    // Auto generated file - any changes will be lost
    
    #pragma mark - tableViewCell.reuseIdentifier
    extern NSString * const PSBAwesomeCell;  
    
    #pragma mark - segue.identifier
    extern NSString * const PSBMasterToDetail;  
    extern NSString * const PSBMasterToSettings;
    

    PASStoryboardConstants.m
    // Auto generated file - any changes will be lost
    
    #import "PASStoryboardConstants.h"
    
    #pragma mark - tableViewCell.reuseIdentifier
    NSString * const PSBAwesomeCell = @"PSBAwesomeCell";
    
    #pragma mark - segue.identifier
    NSString * const PSBMasterToDetail = @"PSBMasterToDetail";
    NSString * const PSBMasterToSettings = @"PSBMasterToSettings";
    

    사용 예 (Swift)



    htps : // 기주 b. 코 m / 아 rtsy / 에이 드

    ObjC에 사용 예 외에도 --swift 옵션을 추가합니다.
    $ sbconstants Kiosk/Storyboards/StoryboardIdentifiers.swift --source-dir Kiosk/Storyboards --swift
    

    StoryboardIdentifiers.swift
    // Auto generated file from SBConstants - any changes may be lost
    
    public enum SegueIdentifier : String {
        case ArtsyUserHasNotRegisteredCard = "Artsy User Has Not Registered Card"
        case ArtsyUserviaPINHasNotRegisteredCard = "Artsy User via PIN Has Not Registered Card"
        case ConfirmBid = "Confirm Bid"
        case ConfirmyourBidArtsyLogin = "Confirm your Bid - Artsy Login"
        case ConfirmyourBidBidderFound = "Confirm your Bid - Bidder Found"
        case ConfirmyourBidBidderNotFound = "Confirm your Bid - Bidder Not Found"
        case EmailLoginConfirmedHighestBidder = "Email Login Confirmed Highest Bidder"
        case EmailNotFoundonArtsy = "Email Not Found on Artsy"
        case ExistingArtsyUserFound = "Existing Artsy User Found"
        case LoadAdminWebViewController = "Load Admin Web View Controller"
        case PINConfirmedhasCard = "PIN Confirmed has Card"
        case PlaceAnotherBid = "Place Another Bid"
        case PlaceaHigherBidAfterNotBeingHighestBidder = "Place a Higher Bid After Not Being Highest Bidder"
        case PushtoBidConfirmed = "Push to Bid Confirmed"
        case RegisterCreditCardToPostal = "RegisterCreditCardToPostal"
        case RegisterPostalToConfirm = "RegisterPostalToConfirm"
        case ShowAdminOptions = "Show Admin Options"
        case ShowLoadingView = "Show Loading View"
        case ShowSaleArtworkDetails = "Show Sale Artwork Details"
        case ZoomIntoArtwork = "Zoom Into Artwork"
    }
    
    public enum ViewControllerStoryboardIdentifier : String {
        case AuctionListings = "AuctionListings"
        case CardTester = "Card Tester"
        case ConfirmYourBid = "Confirm Your Bid"
        case ConfirmYourBidArtsyLogin = "Confirm Your Bid Artsy Login"
        case ConfirmYourBidEnterEmail = "Confirm Your Bid Enter Email"
        case ConfirmYourBidEnterPassword = "Confirm Your Bid Enter Password"
        case ConfirmYourBidPIN = "Confirm Your Bid PIN"
        case FulfillmentContainer = "Fulfillment Container"
        case LoadingBidsorRegistering = "Loading Bids or Registering"
        case ManualCardDetailsInput = "Manual Card Details Input"
        case NoInternetConnection = "No Internet Connection"
        case PlaceYourBid = "Place Your Bid"
        case RegisterAnAccount = "Register An Account"
        case RegisterConfirm = "Register Confirm "
        case RegisterCreditCard = "Register Credit Card"
        case RegisterEmail = "Register Email"
        case RegisterMobile = "Register Mobile"
        case RegisterPassword = "Register Password"
        case RegisterPostalorZip = "Register Postal or Zip"
        case SaleArtworkDetail = "SaleArtworkDetail"
    }
    

    REF



    실제로 사용되는 OSS 앱이 있습니다.
  • htps : // 기주 b. 코 m / 아 rtsy / 에이 드
  • 좋은 웹페이지 즐겨찾기