Какой самый быстрый способ сравнить NSUInteger с int (например, 5) в target-c? - PullRequest
21 голосов
/ 28 апреля 2011

Какой самый быстрый способ сравнить NSUInteger с int (например, 5) в target-c?

Справочная информация - я отмечаю, что следующая строка кода дает ошибку:

STAssertEquals([nsMutableArrayInstance count], 5, @"xxxx");
// gives Type Mismatch

Так что я эффективно спрашиваю, как это исправить, чтобы исправить ошибку ...

Ответы [ 3 ]

50 голосов
/ 03 мая 2011

STAssertEquals требует, чтобы вы сравнивали одинаковые типы с одинаковыми типами. Поэтому добавьте «U» к числу, чтобы сделать его беззнаковым литералом:

STAssertEquals([nsMutableArrayInstance count], 5U, nil);

В качестве альтернативы вы можете использовать OCHamcrest, чтобы сказать:

assertThat(nsMutableArrayInstance, hasCountOf(5));
7 голосов
/ 28 апреля 2011
NSUInteger i = 42;
int j = 5;

if (i > j) {
  NSLog(@"the universe has not ended yet");
}

Вместо STAssertEquals вы можете использовать STAssertTrue:

STAssertTrue([nsMutableArrayInstance count] == 5, @"xxxx");
3 голосов
/ 11 сентября 2013

Использование

STAssertEquals([nsMutableArrayInstance count], (NSUInteger)5, @"xxxx");

(NSUInteger)5 не выглядит таким же чистым, как 5U, но он также будет корректно работать при компиляции для 64-битных систем.

...