I have a very small, lightweight application that uses core data to store arrays as NSData. I've read that this is bad practice as it will get bloated in the long run. But what are the alternatives? Is it better to create a plist and store the data on the disk?
Currently I am not seeing any dramatic performance hits to my app but I want to nip this in the bud before I eat my hat.
You are right, it is a completely bad approach to store data as Core Data gives you an advanced Object Oriented Storage, try mentally defining the type of data you are storing and structure a data model based on that.
If you have considered this approach but are not sure if you'll be able to structure it correctly , I recommend you starting with this CoreData tutorial http://www.raywenderlich.com/934/core-data-tutorial-for-ios-getting-started