Эта строка ...
NSLog(@"minx: %@ miny: %@ maxx: %@ maxy: %@", claimCenterBoundary.minx, claimCenterBoundary.miny, claimCenterBoundary.maxx, claimCenterBoundary.maxy);
... подразумевает, что возвращаемые значения -minx
, -miny
, -maxx
, -maxy
являются всеми объектами и, наиболее вероятно, NSNumber
объектами.
Если это так, то вы не можете использовать <
и >
для сравнения двух NSNumbers
. Вы будете делать сравнение указателей, которое, безусловно, не , что вы хотите.
Итак, что вы могли бы сделать вместо этого:
NSArray *objects = dataCenter.claimCenterBoundaryList;
NSNumber *minx = [objects valueForKeyPath:@"@min.minx"];
NSNumber *miny = [objects valueForKeyPath:@"@min.miny"];
NSNumber *maxx = [objects valueForKeyPath:@"@min.maxx"];
NSNumber *maxy = [objects valueForKeyPath:@"@min.maxy"];
Технически это в 4 раза менее эффективно, чем ваше первоначальное предложение, поскольку вы собираетесь итерировать весь список 4 раза, а не один раз, но если ваш список имеет разумный размер, тогда разница, вероятно, незначительна.