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

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

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

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

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

3 ответов


NSUInteger i = 42;
int j = 5;

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

вместо STAssertEquals, вы могли бы использовать STAssertTrue:

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

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

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

кроме того, можно использовать OCHamcrest сказать:

assertThat(nsMutableArrayInstance, hasCountOf(5));

использовать

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

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