Вы неправильно упорядочили, это должно быть:
.filter(z -> z.getIsActive() == null || "N".equals(z.getIsActive().toString()))
IPhone выполняет OS X. Вот то, как определить Вашу аппаратную платформу на рабочем столе Macintosh. Вот то, как на iPhone. Это - та же точная вещь.
Короче говоря, sysctlbyname("hw.machine", str, sz, 0, 0)
напишет имя платформы в str
. Это, оказывается, "iPhone1,1" или "iPhone1,2" для iPhone и iPhone 3G соответственно.
Я не разработчик iPhone, но проверяющий на базовую платформу вместо возможностей платформы почти всегда неправильный выбор. Если iPhone получает функциональность, Вам нужно, Вы все еще не будете работать. Существует также шанс, Вы примете неправильное решение о следующем iPhone 4.0 (или независимо от того, что это называют).
Мое предположение - то, что существует функциональность на iPhone, который не находится на iPhon3G, в котором касается Ваше программное обеспечение. Мое Предложение состоит в том, чтобы запросить о тех определенных аппаратных средствах вместо того, чтобы изменить поведение программного обеспечения на основе платформы.
Например. вместо того, чтобы проверить на availibility GPS выяснением это iPhone или запрос iPhone3G о доступности GPS, и пойдите оттуда. Тем путем Ваш код будет работать над любой платформой (касание/iPhone 3G iphone/ipod)