另一个选择是(ab)使用单条目 NSDictionary 来存储该对 - 因为现在可以定义 NSDictionary 以强制键入“键”和“值”,并且还支持文字作为语法糖。缺点 - 该对只能保存 NSObjects(实例引用)而不是原始值。
示例如下所示:
typedef NSDictionary<NSString *, NSDate *> *Pair;
然后在你的代码中:
Pair myPair = @{@"my name": [NSDate date]};
Pair myOtherPair = @{@"his name": [NSDate date]};
NSArray<Pair> *myArrayOfPairs = @[myPair, myOtherPair];
继续打印结果:
NSLog(@"%@", myArrayOfPairs);
它看起来非常像你所期望的。
2019-03-18 16:08:21.740667+0200 TesterApp[23135:23269890] (
{
"my name" = "2019-03-18 14:08:21 +0000";
},
{
"his name" = "2019-03-18 14:08:21 +0000";
}
)
当您尝试从所谓的“对”中提取价值时,回报时间就到来了。您实际上必须从 NSDictionary 中挖掘单个条目,而不是像往常一样通过其“Key”,而是假设只有一个条目,如下所示:
Pair somePair = myArrayOfPairs.lastObject;
NSString *name = somePair.allKeys.firstObject;
NSDate *date = somePair.allValues.firstObject;
NSLog(@"name: %@ date: %@", name, date);
最终产生:
name: his name date: Mon Mar 18 16:16:43 2019
我并不特别推荐这种替代方案,但它有其优点和优点。