lib/pbxProject.js
function propReplace(obj, prop, value) {
    var o = {};
    for (var p in obj) {
        if (o.hasOwnProperty.call(obj, p)) {
            if (typeof obj[p] == 'object' && !Array.isArray(obj[p])) {
                propReplace(obj[p], prop, value);
            } else if (p == prop) {
                obj[p] = value;
            }
        }
    }
}
function propReplace(obj, prop, value) {
    var o = {};
    for (var p in obj) {
        if (o.hasOwnProperty.call(obj, p)) {
            if (typeof obj[p] == 'object' && !Array.isArray(obj[p])) {
                propReplace(obj[p], prop, value);
            } else if (p == prop) {
                obj[p] = value;
            }
        }
    }
}
function propReplace ( obj , prop , value ) { var o = { } ; for ( var p in obj ) { if ( o . hasOwnProperty . call ( obj , p ) ) { if ( typeof obj [ p ] == 'object' && ! Array . isArray ( obj [ p ] ) ) { propReplace ( obj [ p ] , prop , value ) ; } else if ( p == prop ) { obj [ p ] = value ; } } } }
helper recursive prop search+replace
helper recursive prop search + replace