1

我有一个 NSDictionary,我想把它的所有对象和键放入一个 NSString,这样我最终可以将它们显示在这样的标签中:

键1:对象1

键2:对象2

键3:对象3

……

有任何想法吗?

4

4 回答 4

6

构建字符串,然后将其设置为标签文本。

NSMutableString *myString = [[NSMutableString alloc] init];

[dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
    [myString appendFormat:@"%@ : %@\n", key, obj];
}];

self.label.text = myString;

笔记

格式说明符状态的文档(字符串编程指南) :%@

%@
Objective-C 对象,打印为 descriptionWithLocale 返回的字符串:如果可用,否则为描述。也适用于 CFTypeRef 对象,返回 CFCopyDescription 函数的结果。

因此,如果这些是您自己在字典中的自定义对象,您很可能需要重写该description方法以提供更有意义的输出

更新

您提到您需要按键对输出进行排序-字典未排序,因此您必须以不同的方式进行-此示例假定您的键是字符串

NSArray *sortedKeys = [[dictionary allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];

NSMutableString *myString = [[NSMutableString alloc] init];

for (NSString *key in sortedKeys) {
    [myString appendFormat:@"%@ : %@\n", key, [dictionary objectForKey:key]];
}

self.label.text = myString;
于 2012-06-19T22:10:24.983 回答
2

试试这个

for(id key in [dictionary allKeys])
{
    id value = [dictionary objectForKey:key];
    NSLog(@"%@ : %@", key, value);
}
于 2012-06-19T21:52:57.107 回答
1
NSString *row;
for (id key in dictionary) {
    row = [NSString stringWithFormat:"%@: %@", key, [dictionary objectForKey:key]];
    // do something with your row string
}
于 2012-06-19T22:10:33.750 回答
0

我试图从我的 TCTime 对象中附加两个时间值并显示在标签中,即使我在最后添加了“\n”,它也只打印第一个值而不是第二个值。

_feedTimes 是 NSArray。

NSMutableString *myString = [[NSMutableString alloc] init];

TCTime *time = _feedTimes[indexPath.row];

[myString appendFormat:@"%s : %@\n", "Time 1 ", time.Time1];

[myString appendFormat:@"%s : %@\n", "Time 2 ", time.Time2];

self.label.text = myString;
于 2014-06-22T04:30:44.047 回答