另一个选择是,滥用单条目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";
}
)
当你试图从所谓的“Pair”中提取值时,回报时间就到了。你必须实际从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
我并不特别推荐这种替代方案,但它有其优点和好处。