передача аргумента 1 из несовместимого типа указателя - PullRequest
0 голосов
/ 15 марта 2010

Почему этот код ...:

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 ]

2 голосов
/ 15 марта 2010

На iPhone kABOtherLabel - это CFStringRef, а не NSString *. Тем не менее, эти два моста являются бесплатными, поэтому вы можете просто привести их к NSString *:

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

(Кроме того, вы можете изменить ключи и значения в этом вызове, если только вы не хотите, чтобы ваши буквальные строки были ключами (объекты идут первыми)).

1 голос
/ 15 марта 2010

Я считаю, что kABOtherLabel - это постоянное целое число, которое не является объектом. Если вы хотите добавить его как объект, используйте что-то вместе со строками [NSNumber numberWithInteger:kABOtherLabel] (то же самое относится и ко второму значению объекта)

...