Core Data vs SQLite [closed] - ios

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
I am writing a trivia app in which there will be hundreds of sets of questions.
The app will come pre loaded with some quizzes however they would then need to download further quizzes which once downloaded will be stored within the app so that users can play them offline.
In this specific instance would I be better using core data or SQLite.
Thanks in advance.

The thing you have to realise here is that CoreData is not a DataBase.
It is an object persistence layer in your app. It happens to be backed by a SQLite DB by default but that's largely irrelevant.
I have written apps with a CoreData store that contains in the region of 100,000 entities and millions of relationships between them.
The argument that CoreData cannot handle complex data is not correct.
The trick is to design your Object Model exactly like you would define you object model in code.
You don't need foreign keys or join tables (these are all handled for you by Core Data).
If you have (for instance) a many-to-many relationship between Class and Student then just create a relationship between them and define it as a Many relationship on each end. Core Data will handle the data for you by creating the join tables and stuff like that. You don't need to worry about that.
For preloading the data you can also do this. It takes a bit of work but you can bundle a preloaded DB generated by CoreData and unwrap it at initial launch.
Which to use comes largely down to opinion (and so isn't a very good question for StackOverflow). There are some excellent tutorials on Core Data on the Ray Wenderlich site.
Worth reading through if you've never used CoreData before.

Related

How to Migrate iOS Aplication api [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed yesterday.
Improve this question
I'm from a development team at a large Telecom, I'm migrating an API within an app, the new version of the api will have a completely new model, with a new structure, the data coming from the api is recorded in the coredata and then extracted from this to be displayed by the viewcontroller (cashe), the client asked to do it in stages, and the first stage is to migrate to the next api to deliver value quickly, I am in doubt if I implement the entire model at this first moment, having to change the entire structure that extracts the model from coredata to display, or if I just create a mapping from the new model to the old one (mapping the new values to the old ones), just to record the data, maintaining the structure of extracting data from coredata and display, leaving this to be removed in a next step. Which of the two ways will take more work? Changing the model and also the recording and extracting structure will be much more costly, which will extend the work to unacceptable deadlines?
One of the goals is to completely remove the CoreData.
I'm in the process of renaming all the fields, changing the model's structure and the model's recording and extraction flows, but I'm thinking that this work will be huge, not having any value delivery in the short term.

IOS Backend for User Data [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 months ago.
Improve this question
I am brand new to ios development and am looking for some advice on the best way to structure my user data and access it throughout my app.
Data is retrieved via HTTPS requests that query a database for the desired information. There are separate calls for the different tables containing information of interest. The returned data is formatted as nested dictionaries where the outermost key is the column and the subsequent dictionary is key-value pairs of the index and the table value. Example:
{"column1":{"0":"value1-1", "1":"value1-2", "2":"value1-3"},"column2":{"0":"value2-1", "1":"value2-2", "2":"value2-3"}...}
My primary requirement is that I will need to be able to filter this data by the innermost values (some will be dates, some will be numbers, etc). I would like to have the data in a format that will make this simple to do and will not cause delays as there is no limit on the number of possible rows.
I have looked into reconstructing a user-specific SQLite database with the information and querying that throughout the app as necessary. I have also explored dataframes as this app was originally developed in python - don't ask - and relied on pandas dataframes.
I know this decision will impact me heavily and am trying to do my best to make an informed decision. I appreciate any feedback and am happy to give more useful context that might be missing.
TIA
You can use SQLite database for persistent storage. This is ideal for your main requirement of filtering the data. You should also create a structure or a class modelled on your data to store and use during runtime. You can refer this for deciding between a class or structure.

Should I always use Core Data for my model? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
The question is very simple.
Should I use Core Data only to persist data, to store it locally on a device or should I use it ALWAYS just to manage my application's model even if I do not persist significant amount of data?
What do you think?
Core Data provides an infrastructure for change management and for saving objects to and retrieving them from storage. It is not, though, in and of itself a database. You can use an in-memory store in your application.
Use it Always ? : NO. Use it when you think that your require the features that the Core Data framework offers to you, like any other framework.
Short answer is no. As others said if you do not need persistent store just create runtime objects and manage them.
Even when you need persistent database, Core Data is not always the best solution. For example if you have multi-platform app, or if you plan to port your application in future I'll definitely consider use base sqlite3 with requests. This way I can use same database structure in my Android, iOS and BB application, and even my sql statements will be written only once(with their interface) and then I'll just need some platform specific implementation above them.

Creating a database in Xcode [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I want to create a searchable database in Xcode - for example, of different trees. The database would consist of the tree name, two images, price, and a short description. What is the best and most efficient way of creating such a database?
I am aware of: Core Data, SQLite3, and Parse. I am leaning towards SQLite3 but have not found a good place to learn how to implement this. Any suggestions?
Seeing as you are new to Objective-C and I doubt this will evolve into something need direct SQL I would suggest using CoreData. Although it is not technically a data base it is an object graph, it is built for exactly what you are wanting to do. Apple was even nice enough to build wrappers for everything you want to do.
CoreData to store your tree name, two images, price, and a short description.
NSFetchedResultsController for grabbing it.
UISearchBarController for letting the user search.
You would want to use Parse if you wanted to save your data to a server. If your doing everything locally I wouldn't worry about Parse. CoreData is what you want.

Core Data Object Model has become quite bloated [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
My Core Data object has become bloated with properties (10 in total, 2 BOOL, 5 NSString, 3 NSDate)
and now I want to add yet another few properties. This object is the central data object for my entire app, so it's required a lot of properties. I read somewhere that some people separate out a single object into 2 or more Core Data Entities. What's best practice?
Unless you can prove me otherwise, 10 properties is not a problem at all.
You can bloat your single Core Data Entity with as many properties and relations. Core Data works on retrieving data via lazy loading and is automatically managed by itself. Hence, don't worry you will not run into memory scarcity issue. :)
In "edit scheme..." select left run app and in the right "Arguments passed on launch" add "-com.apple.CoreData.SQLDebug 1" it will show you sqlite query time in your log.
you just want optimize sqlite query not about core data, just use explain to analyze it
just focus on query time and optimize it
Core data not only store data and query ,also provide PersistentStore.
I think core data is framework , sqlite like mysql , PersistentStore like small memcache , you
get once from sqlite, and crud in the PersistentStore

Resources