How to create constant NSString by concatenating strings in Obj-C?

前端 未结 3 754
野的像风
野的像风 2020-12-18 20:10

I\'m trying to instanciate a constant NSString by concatanating other NSString instances.

Here is what I\'m doing in my implementation file :

static          


        
相关标签:
3条回答
  • 2020-12-18 20:33

    I think you need to step back and think about if the string needs to be defined as a const.

    Clearly the string isn't a constant since you are trying to assign a new value to it - and that is not possible since you specifically instructed the compiler to make sure the value wasn't changed by using the const keyword.

    If the string resides as a property in a class you could make it a read-only property - i.e. accessor method but no setter method. You would then be able to construct your string as you wish in the class internally while keeping the callers from changing the value.

    0 讨论(0)
  • 2020-12-18 20:34

    I thought there must be a way to do this but the best I could do was using a #define directive. For example,

    // Define the base url as an NSString
    #define BASE_URL @"http://www.milhouse.co.uk/"
    
    // Now the derived strings glued by magic
    NSString *const kBaseURL    = BASE_URL;
    NSString *const kStatusURL  = BASE_URL @"status.html";
    NSString *const kBalanceURL = BASE_URL @"balance.html";
    
    0 讨论(0)
  • 2020-12-18 20:40

    static const objects value is determined at compile-time so you indeed cannot add any method calls to their initialization. As an alternative you can do the following:

    static NSString *const MY_CONST = @"TEST";
    static NSString *MY_CONCATENATE_CONST = nil;
    
    if (nil == MY_CONCATENATE_CONST)
       MY_CONCATENATE_CONST = [NSString stringWithFormat:@"STRING %@", MY_CONST];
    
    0 讨论(0)
提交回复
热议问题