This is just a guess, as not all of the code is there. In your init method for the Transaction class, do you make sure to retain the strings? (category and description).
The thing that stands out to me is that you initialize the Transaction, then release the categoryString immediately after. If you're not retaining the string, then this could be the source of your crash.
On a side note, you are leaking memory. Here:
NSString *descriptionString = [[NSString alloc] init];
descriptionString = descriptionField.text;
descriptionString is pointing to a newly allocating string, only to be reassigned to an existing string, so the first string is leaked. You should change this to:
NSString *descriptionString;
descriptionString = descriptionField.text;
or more simply:
NSString *descriptionString = descriptionField.text;