I'm writing an iOS applications that saves Music albums(just an exercise I'm doing for the fun of it) .
For every Album there's a singer, song names, time, and a picture
The final result will be a lot of objects with a lot of details including a picture attached to every object. Should I even consider doing something like that with plist? (can pictures be stored in a plist?)

What's the best way to save and access that data?
I'm new to iOS and from the training videos I've seen Core Data is not recommend for the beginner user. Is that really the case?

If I'm going with plist, should I create one plist for every genre for example rap.plist , rock.plist etc' or just a big data.plist?

6 Answers
6

I think the best way you can do this, since you are new to IOS is by using sqlite. Save all the information you want in your local database and display it on the screen.

You can use plist if you have data structure that is small.

Note that property lists should be used for data that consists primarily
of strings and numbers. They are very inefficient when used with large blocks
of binary data. A property list is probably the easiest to maintain, but it will be loaded into memory all at once. This could eat up a lot of the device's memory.
With Sqlite you will easily be able delete , edit, insert your data into the database.
Core data also uses sqlite for data storage only it helps you to manage your data objects, their relationships and dependencies with minimal code.

And since your are new getting started with core data would not be such a good idea i think.. so i would suggest start off with normal sqlite. Save the data in one of your folders of your app and store their path in the database.

You dont have to write different plists.. You can use the same one if you are using.

How do I save information in sqlite? is that simple as creating a plist file in File -> new? (sorry, not near xcode)
–
SegevNov 28 '12 at 11:52

check the edit.. i have given some links to learn sqlite.. its quite easy.. since your data structure will be small and need not manage any data objects and their relationships, you should use sqlite..
–
Sharanya K MNov 28 '12 at 12:08

I would go for core data. If you choose the right template when you create your new project in xcode then reduce the once-off overhead work significantly.

With that simple structure I would say that the templates provides nearly everything you need. Just define your model and layout and off you go.

There is just the images where I would spend a bit more time in thinking it over. I personally never put the image data into core data itself. I rather stored them as file and within my core data model I just stored the path and filename to access it. As file name I simply used a timestamp. You could use some auto-increment or other unique id technique but a time stamp would do as well. It will not be visible to the user anyway.

As you edited your original question an decided to go with plist now.
In that case I would go for one plist per ablum and one overall plist for the list of albums.
You could, of course, use more plists for categories etc.

However, if you are thinking of data structures like categories you are far better off with core data. Especially when it comes to searching.

coredata is a apple provided persistant tool, while plist is XML file. The reason why core data is not recommended for beginner, I think, is core data is more difficult than plist from programming perspective. For your application, obviously core data is more suitable. But alternatively, you may also use archive file, that's between core data and plist.