When textFieldDidEndEditing is called the value in the text field that is being edited in unlocalized. I think you are missing the cal to localize the edited value before unlocalizing all strings. Calling getUnlocalized on the edited string is going to return 0 as the string is not in currency style.
Therefore your didEndEditing should look like this -
-(void)textFieldDidEndEditing:(UITextField *)textField
{
self.spendingCategory.name = self.nameTextField.text;
// First localize the current string that is being edited
textField.text = [[NSNumber numberWithDouble:[textField.text doubleValue]] getLocalizedCurrencyString];
// Now all of the strings are localized. Unlocalize and store them
self.spendingCategory.costPerDay = [NSNumber numberWithDouble:[NSNumber getUnLocalizedCurrencyDoubleWithString:self.dailyTextField.text]];
self.spendingCategory.costPerWeek = [NSNumber numberWithDouble:[NSNumber getUnLocalizedCurrencyDoubleWithString:self.weeklyTextField.text]];
self.spendingCategory.costPerMonth = [NSNumber numberWithDouble:[NSNumber getUnLocalizedCurrencyDoubleWithString:self.monthlyTextField.text]];
self.spendingCategory.costPerSemiYear = [NSNumber numberWithDouble:[NSNumber getUnLocalizedCurrencyDoubleWithString:self.semiAnnuallyTextField.text]];
self.spendingCategory.costPerYear = [NSNumber numberWithDouble:[NSNumber getUnLocalizedCurrencyDoubleWithString:self.annuallyTextField.text]];
[self setTextFieldsWithFormat];
}