我有一个保存数据的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);
}
答案 0 :(得分:2)
valueForKeyPath:
会返回NSArray
,而非NSString
。虽然您已将likersCount
和likersRecent
声明为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]]];
}
不使用逗号或圆点。