为什么这段代码......:
NSDictionary *testDictionary = [NSDictionary dictionaryWithObjectsAndKeys:kABOtherLabel, @"other", kABWorkLabel, @"work", nil];
// There are 9 more key-value pairs that i've omitted here.
抛出此警告:
warning: passing argument 1 of 'dictionaryWithObjectsAndKeys' from incompatible pointer type
顺便提一下,代码按预期工作,但我不喜欢将警告取消删除。我假设它不喜欢我在字典中存储常量。那么,我可以在哪里存储它?我应该在每个常数之前放置(void *)
吗?
答案 0 :(得分:2)
在iPhone上,kABOtherLabel
是CFStringRef
,而不是NSString *
。但是,这两个是免费桥接的,因此您可以将它转换为NSString *
:
NSDictionary *testDictionary = [NSDictionary dictionaryWithObjectsAndKeys:(NSString *)kABOtherLabel, @"other", (NSString *)kABWorkLabel, @"work", nil];
(另外,你可以在这次调用中反转你的键和值,除非你希望你的文字字符串是键(对象先到))。
答案 1 :(得分:1)
我相信kABOtherLabel
是一个不是对象的常数整数。如果要将其添加为对象,请使用[NSNumber numberWithInteger:kABOtherLabel]
行(与第二个值对象相同)