Objective C逻辑OR运算符不在块中进行评估

时间:2015-12-30 02:55:42

标签: ios objective-c if-statement logical-operators nsindexset

我试图检查哪个数组元素的值彼此相等或者#box { background-color: teal; width: 500px; height: 92px; position: absolute; z-index: 50; } #test{ position: relative; top: 15px; width: 100%; height: 1px; background-color: blue; } #containment { background-color: #ddd; width: 500px; height: 800px; } .ru { background-color: red; width: 500px; height: 30px; margin-top: 1px; } .hover { background-color: yellow; } 10.数组的计数为15.问题是当我测试for(i=1; i<20; i++){ $("#containment").append("<div class='ru'>") } $( "#box" ).draggable({ revert: "invalid", }); $( ".ru" ).droppable({ hoverClass: "hover", tolerance:"intersect", drop: function(event, ui) { ui.draggable.position({ of: $(this), my: 'left top', at: 'left top' }); } }); 10的值时一个NSNumber,代码似乎没有评估。

在下面的数组中,例如,代码应该返回索引0中的值存在于索引{0,9,10}中,因为NSNumber 1存在于索引0和10以及{{1索引9中存在10。

  

1-2-3-4-5-6-7-8-9-10-1-2-3-4-5

但是,它仅评估索引0中的if statement值是否等于NSNumber 1而不是NSNumber 10.输出不是预期的{0,9,10但只有{0,10}。

NSNumber

1 个答案:

答案 0 :(得分:1)

您的期望不正确。 number,外部循环迭代器仅对数组中的@ 10元素等于10。循环的预期结果是1..5元素上的两个索引,以及其余的一个索引。

如果您希望循环找到@ 10元素并将其包含在每个结果中,请更改条件...

if ([number isEqualToNumber:obj] || [number isEqualToNumber:ten])

为...

if ([number isEqualToNumber:obj] || [obj isEqualToNumber:ten])

顺便提一下,该块可以更简单地说明为......

NSIndexSet *matchingIndex = [mutableArray indexesOfObjectsPassingTest:^BOOL(NSNumber *obj, NSUInteger idx, BOOL *stop) {
    return ([number isEqualToNumber:obj] || [obj isEqualToNumber:@10]);
}];