【问题标题】:convert from array to string从数组转换为字符串
【发布时间】:2017-10-29 10:35:35
【问题描述】:

我有数组:

NSArray *array = [NSArray arrayWithObjects:@"One",@"Second",@"Third", nil];

我想在控制台中获取此代码结果:

[One]
background = 0,

[Second]
background = 1,

[Third]
background = 2,

我尝试使用此代码来做到这一点:

Int n = 0;
for (; n < 3; n++)
{

NSArray *array = [NSArray arrayWithObjects:@"One",@"Second",@"Third", nil];
NSString *stringFromArray = [array componentsJoinedByString:@"], background = %i ["];
NSLog (@"%@",stringFromArray);
}

如何解决问题?

【问题讨论】:

    标签: ios objective-c debugging


    【解决方案1】:

    如果您想用该内容构建一个字符串,而不仅仅是将其显示到控制台,请使用如下代码:

    NSArray *array = [NSArray arrayWithObjects:@"One",@"Second",@"Third", nil];
    
    NSMutableString *output = [NSMutableString new];
    for (int index = 0; index < array.count; index++) {
      [output appendFormat: @"[%@]\nbackground = %d,\n\n", array[index], index];
    }
    

    要在没有 NSLog 标头的情况下显示它,请将其转换为字符串并使用 printf():

    const char *cString = [output cStringUsingEncoding: NSASCIIStringEncoding];
    printf("%s", cString);
    

    Objective-C 的字符串处理通常比 C 的要好,因此使用 NSString 对象进行字符串处理然后在最后转换为 C 字符串的情况并不少见。

    如果您在大型程序中经常这样做,您可以编写一个 printString() 函数,该函数将 NSString 作为输入,将其转换为 C 字符串,并使用 printf() 显示它

    【讨论】:

    【解决方案2】:

    这个怎么样?

    for (NSString *each in array) {
        NSLog(@"[%@]\nbackground = %d", each, [array indexOfObject:each]);
    }
    

    【讨论】:

    • 谢谢。这是作品!但是如果我想要这个结果[@"One"]怎么办?
    • 改成这样 NSLog(@"[@\"%@\"]\nbackground = %d", each, [array indexOfObject:each]);
    • 如果我想在控制台2017-10-29 14:37:26 中删除时间,我应该使用printf?但是如果我使用printf 我会遇到问题Invalid conversion specifier '@'
    • 查看我关于避免来自 NSLog 的时间戳的答案。
    猜你喜欢
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    • 2013-11-27
    相关资源
    最近更新 更多