views:

74

answers:

4

Hi

I have dozens of NSStrimgs that when the app loads I want to all be set to the same set. All of them. How can I do this without typing out every single one? Is there a shortcut method?

Thanks.

A: 

Instead of having dozens of strings that have the same value, could you make a single static global string and reference that? If you need to change it to separate values later, use instance variables that are initialized to the global string.

Marc Charbonneau
Could you expand please? And yes every value will be changed at some point.
Josh Kahane
+2  A: 

Also the problem is that Josh isn't specific enough about how he's using his dozens of strings... I think this would be better:

NSMutableArray *stringsArray = [NSMutableArray arrayWithCapacity:1]; 
NSString *tempStr = @"My unique string";  // Thanks Sven!

// Say you want a dozen strings 
for (int i = 0; i < 12; i ++) {

    [stringsArray addObject:tempStr];
}

// Now you can use them by accessing the array
[self doSomethingWithString:[stringsArray objectAtIndex:8]];
iPhoneDevProf
You should initialize `tempStr` outside of the loop.
Sven
A: 

If the value is known when you are compiling the code AND it is not going to change after subsequent application sessions then you can use a simple #define.

#define MY_DEFAULT_STRING @"THE DEFAULT STRING"

Now all you have to do is the following.

{
    NSString *myString1 = MY_DEFAULT_STRING;
    NSString *myString2 = MY_DEFAULT_STRING;
    ....
    NSString *myStringN = MY_DEFAULT_STRING;
}

If all the strings are in the same code file, just put the define at the top. If the strings are in separate code files, then it could be put into your precompiled header. Having a constants file is usually better.

Using constant extern NSString would probably be more correct, but this is simple and easy to do.

logancautrell
A: 

This sounds like your model is not very good at all. Since you want to initialize all of your strings to the same value they are obviously related and probably should be modeled as an array like iPhoneDevProf described. That makes other things a lot easier too, you can move other code that is repeated for every string into a loop.

Sven