2

我正在尝试为 FMDB 创建一个实用方法,该方法将采用 NSArray 值并返回一个占位符字符串,以根据数组中值的数量在 IN 语句中使用。

我想不出一种优雅的方式来创建这个字符串,我是否缺少一些 NSString 实用方法:

// The contents of the input aren't important.
NSArray *input = @[@(55), @(33), @(12)];    

// Seems clumsy way to do things:
NSInteger size = [input count];
NSMutableArray *placeholderArray = [[NSMutableArray alloc] initWithCapacity:size];
for (NSInteger i = 0; i < size; i++) {
    [placeholderArray addObject:@"?"];
}

NSString *output = [placeholderArray componentsJoinedByString:@","];
// Would return @"?,?,?" to be used with input
4

1 回答 1

4

那这个呢?

NSArray *input = @[@(55), @(33), @(12)];

NSUInteger count = [input count];
NSString *output = [@"" stringByPaddingToLength:(2*count-1) withString:@"?," startingAtIndex:0];
// Result: ?,?,?

stringByPaddingToLength通过附加来自 pattern 的字符,将给定的字符串(在这种情况下为空字符串)填充到给定的长度@"?,"

于 2013-10-15T15:01:47.537 回答