How to pass NSString as arguments with formatWithString?

1.6k Views Asked by At

This is a fundamental part of my app, infact it is a function.

-(void)appendArguments:(NSString *)argument {
NSString *temp = [NSString stringWithFormat:_path, argument;
}

But this is not possible. Here _path is an instance variable that holds a string with integer arguments. The string argument holds integers, for example:

_path = @"I got %d apples, ate %d, I am left with %d";
argument = @"7,3,7-3";
*temp = [NSString stringWithFormat:_path, argument;

Can we make an array of arguments as objects, and replace them with pointer argument.

My app is now on hold because of this.

3

There are 3 best solutions below

18
mag. On BEST ANSWER

You can use the va_list.

void myLog(NSString *format, ...)
{
#ifdef DEBUG
    va_list ap;
    va_start(ap, format);
    NSString *string = [[NSString alloc] initWithFormat:format arguments:ap];
    fprintf(stdout, "%s", string.UTF8String);
    va_end(ap);
#endif
}


@implementation MyViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    myLog(@"%s, %@\n", __func__, self);
}
1
Mehul Patel On

Yes you can do it. Use NSMutableString and append string to make a custom format for string.

NSString *_path = @"I got %d apples, ate %d, I am left with %d";
NSString *argument = @"7,3,7,-3";

NSMutableString *fieldString = [NSMutableString new];
[fieldString appendString:[NSString stringWithFormat:@"@\" %@\" ",_path]];
[fieldString appendString:@","];
[fieldString appendString:argument];

NSString *strField = [NSString stringWithString:fieldString];
fieldString = nil;
0
Dharma On
     NSString* arguments = @"7,3,7-3";
        [self appendArguments:arguments];

    -(void)appendArguments:(NSString *)argument {

    NSString* _path = @"I got %d apples, ate %d, I am left with %d-%d";
     NSArray*path=[[NSArray alloc]init];
     path=[argument componentsSeparatedByString:@","];
 NSString *temp = [NSString stringWithFormat:_path, [path[0] intValue],[path[1]   intValue],[path[0] intValue],[path[1] intValue] ];

    NSLog(@"%@",temp);

            }

the result

I got 7 apples, ate 3, I am left with 7-3