从不兼容的指针类型传递参数1

时间:2010-03-15 07:14:05

标签: objective-c nsdictionary

为什么这段代码......:

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 *)吗?

2 个答案:

答案 0 :(得分:2)

在iPhone上,kABOtherLabelCFStringRef,而不是NSString *。但是,这两个是免费桥接的,因此您可以将它转换为NSString *

NSDictionary *testDictionary = [NSDictionary dictionaryWithObjectsAndKeys:(NSString *)kABOtherLabel, @"other", (NSString *)kABWorkLabel, @"work", nil];

(另外,你可以在这次调用中反转你的键和值,除非你希望你的文字字符串是键(对象先到))。

答案 1 :(得分:1)

我相信kABOtherLabel是一个不是对象的常数整数。如果要将其添加为对象,请使用[NSNumber numberWithInteger:kABOtherLabel]行(与第二个值对象相同)