NSDictionary具有以下方法签名:
- (NSArray *)objectsForKeys:(NSArray *)keys notFoundMarker:(id)anObject;
我的问题:
notFoundMarker
使用notFoundMarker
本身返回?如果键和值是不同的对象类型,并且让人知道仍然缺少什么,这将非常有用。notFoundMarker
的值,它会实际运行吗?或者只是返回块的stack-allocated-address?notFoundMarker
答案 0 :(得分:3)
正如下面的评论所指出,您应该使用[NSNull null]
可能没有编写自己的包装器方法或某种类别来执行此操作。也就是说,如果您只是想知道找不到哪个密钥,您只需查看传入的密钥数组,因为索引将匹配。
你当然可以使用一个块。我不认为它会被运行。这应该很容易测试(只需定义一个块,将一些东西记录到控制台并尝试它)。
这实际上取决于上下文以及您对返回的数组所做的操作。放入数组并返回没有什么本质上是坏的,但是我会质疑决定使用任何与你希望为 的键返回的对象类型不匹配的东西>在NSDictionary中找到。
编辑: 事实上,你可能可以实现你想要的2.像这样:
NSMutableArray *objects = [myDictionary objectsForKeys:myKeys notfoundMarker:[NSNull null]];
for (int ii = 0; ii < [objects count]; ii++ ) {
if ([objects objectAtIndex:ii] == [NSNull null]) {
[objects insertObject:[myKeys objectAtIndex:ii] atIndex:ii];
}
}