Подтвердить что ты не робот

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

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

Фон - я отмечаю, что следующая строка кода дает ошибку:

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

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

4b9b3361

Ответ 1

NSUInteger i = 42;
int j = 5;

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

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

STAssertTrue([nsMutableArrayInstance count] == 5, @"xxxx");

Ответ 2

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

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

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

assertThat(nsMutableArrayInstance, hasCountOf(5));

Ответ 3

Используйте

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

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