Numerical solving requires that all variables, other than those being solved for, have been previously assigned constant numeric values.
Making up substitutes for all the functions and values for variables that I assume you have
ninit= .2; kg= .3; hc= .7; b= .6; qc= .5; hi[x_, y_]:=x+y; qi[x_]:=x^2; p[i_, x_, y_]:=i+x+y;
A[i, h] := Piecewise[{{1 - i*0.1, h >= 0.0}, {0, h < 0}}];
sol[i_] := NDSolve[{n'[t] == kg + n[t] (A[i, hc - hi[y[t], y'[t]]] (qc - qi[hi[y[t], y'[t]]]) +
qi[hi[y[t], y'[t]]] - 1), y'[t] == (p[i, y[t], y'[t]] - A[i, hc - hi[y[t], y'[t]]]) b,
n[0] == ninit, y[0] == 1}, {n[t], y[t], n'[t], y'[t]}, {t, 0, 100}];
sol[4]
gives
{{n[t] -> InterpolatingFunction[{{0., 100.}}, <>][t],
y[t] -> InterpolatingFunction[{{0., 100.}}, <>][t],
Derivative[1][n][t] -> InterpolatingFunction[{{0., 100.}}, <>][t],
Derivative[1][y][t] -> InterpolatingFunction[{{0., 100.}}, <>][t]}}
with no error messages. And the resulting four functions plot.
Are you sure you have assigned constants to all your other variables and defined all your other functions?
If so then perhaps there is a zero lurking in one of your denominators somewhere.
Or show all the missing information and perhaps someone can track down the source of the problem.