首页 > 解决方案 > 比较 NSInteger 和 NSUInteger

问题描述

我需要比较两个变量,以检查数组中是否存在索引: indexPath.rowis NSInteger [self arrayOfData].countis NSUInteger

问题是它们属于不同的类型,当indexPath.row=-1 时,它会自动转换为 18446744073709551615(无符号长),这是我试图避免的。

如何检查NSIndexPath' 行定义的索引是否存在于 中NSArray

代码:

- (void) checkIfIndexExists:(NSIndexPath*) indexPath inArray:(NSArray*)arrayOfData {
    if (indexPath.row >= [self arrayOfData].count) {  // indexPath.row=-1 gets interpretted as 18446744073709551615 (unsigned long)
        DDLogDebug(@"Warning: Index doesn't exist {%@}", indexPath);
        return;
    }
}

标签: objective-cnsarraynsindexpathnsintegernsuinteger

解决方案


这是我通过转换unsigned long为解决问题的方法long

- (void) checkIfIndexExists:(NSIndexPath*) indexPath inArray:(NSArray*)arrayOfData {
    if (indexPath.row >= (long) [self arrayOfData].count) {  // indexPath.row=-1 gets interpretted as 18446744073709551615 (unsigned long)
        DDLogDebug(@"Warning: Index doesn't exist {%@}", indexPath);
        return;
    }
}

推荐阅读