从NSDictionary到NSString的所有键和对象

时间:2012-06-19 21:49:34

标签: objective-c nsstring nsdictionary

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

key1:object1

key2:object2

key3:object3

......

有什么想法吗?

4 个答案:

答案 0 :(得分:6)

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

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

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

self.label.text = myString;

注意

%@格式说明符状态的文档(String Programming Guide):

  

<强>%@
  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;

答案 1 :(得分:2)

试试这个

for(id key in [dictionary allKeys])
{
    id value = [dictionary objectForKey:key];
    NSLog(@"%@ : %@", key, value);
}

答案 2 :(得分:1)

NSString *row;
for (id key in dictionary) {
    row = [NSString stringWithFormat:"%@: %@", key, [dictionary objectForKey:key]];
    // do something with your row string
}

答案 3 :(得分:0)

Iam尝试从我的TCTime对象追加两个时间值并显示在标签中,即使我添加了&#34; \ n&#34;到最后它只打印第一个值而不打印第二个值。

_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;