将NSString作为一系列元素呈现

时间:2015-03-08 12:18:20

标签: ios objective-c

我有一个保存数据的NSString(实际上可以呈现NSArray)。我想在标签上输出它。

在NSLog中,我的NSString输出是:

(
 "cristian_camino",
    "daddu_02",
    "_ukendt_babe_",
    "imurtaza.zoeb"
)

我想要的是,将它呈现为:"cristian_camino","daddu_02","_ukendt_babe_","imurtaza.zoeb"

单行。

我可以完成将字符串转换为数组并执行以下操作:arrayObjectAtIndex.0, arrayObjectAtIndex.1, arrayObjectAtIndex.2, arrayObjectAtIndex.3.

但那看起来不太好,而且对象可能是零,所以我更喜欢NSString来保存数据。

那么,我怎么能把它写在一条单线上呢?

更新:

我想用来为UILabel设置文本的方法:

-(void)setLikeLabelText:(UILabel*)label{

    //Likes

   NSString* likersCount = [self.photosDictionary valueForKeyPath:@"likes.count"];
   NSString* likersRecent = [self.photosDictionary valueForKeyPath:@"likes.data.username"];

    NSString *textString = [NSString stringWithFormat:@"%@ - amount of people like it, recent "likes": %@", likersCount, likersRecent];

    label.text = textString;
    NSLog(@"text String is %@", textString);
}

3 个答案:

答案 0 :(得分:2)

valueForKeyPath:会返回NSArray,而非NSString。虽然您已将likersCountlikersRecent声明为NSString的实例,但它们实际上都是值数组。您应该可以执行以下操作来构造字符串:

NSArray* likersRecent = [self.photosDictionary valueForKeyPath:@"likes.data.username"];
NSString *joined = [likersRecent componentsJoinedByString:@"\", \""];
NSString *result = [NSString stringWithFormat:@"\"%@\"", joined];
NSLog(@"Result: %@", result);

componentsJoinedByString:会使用", "加入数组元素,然后stringWithFormat调用会在开头和结尾添加"

答案 1 :(得分:0)

该陈述不正确,需要转义内部引号(“您想要显示的内容”):

NSString *textString = [NSString stringWithFormat:@"%@ - amount of people like it, recent \"likes\": %@", likersCount, likersRecent];

答案 2 :(得分:0)

如果有人好奇我如何解决它,那就是:

for (int i =0; i < [likersRecent count]; i++){


    stringOfLikers = [stringOfLikers stringByAppendingString:[NSString stringWithFormat:@"  %@", [likersRecent objectAtIndex:i]]];
}

不使用逗号或圆点。