开发者

Objective-C identifier from NSString

开发者 https://www.devze.com 2023-04-02 16:49 出处:网络
I want to pass an NSString to a method and have that particular NSString name a new NSSMutableArray. Confusing? Programmatically looks like this:

I want to pass an NSString to a method and have that particular NSString name a new NSSMutableArray. Confusing? Programmatically looks like this:

+ (void)newMutableArrayWithName:(NSString*)theArrayName
{
     NSLog(@"Creating an array that is named: %@",theArrayName);
     NSMutableArray* theArrayName = [[NSMutableArray alloc] init];
}

Unfortunately, "theArrayName" is not 开发者_JAVA技巧affiliated with the argument passed to the method. Is there any way this is achievable?


The name of a variable is used by the compiler, and is set at compile-time, not at run time.

If you need to be able to associate a label with an array, I suggest that you use an NSDictionary to do something like this

NSString *theArrayName = @"My Cool Array";
NSMutableArray *theArray = [NSMutableArray array];
NSDictionary *theDictionary = [NSDictionary dictionaryWithObjectsAndKeys: 
                                      theArray, theArrayName, nil];

You could have multiple "named" arrays in the dictionary, if you wanted, and could access them by the names that you gave them

[theDictionary objectForKey:@"My Cool Array"];


Look into key-value coding for setting the values of existing properties by the property's name, but it appears it can't create a new property. For that, you should just use a dictionary.

0

精彩评论

暂无评论...
验证码 换一张
取 消