Yasin Babahanoğlu
Yasin Babahanoğlu

Reputation: 3

I want to convert .plist into sqlite

I am using plist to parse dozens of data into tableview. It works pretty fine. Yet, it is unprotected. Someone can easily reach that plist file if he opens the content of .ipa file. I want to protect my data. Is there anyway to protect .plist file? As far as I know, Sqlite protects data by changing values into complex keys. Yet, if I am to use sqlite for my app, I have to change the way how I parse data into strings. I know nothing about SQLite.

Where to start? What do you suggest? Is there easier and better way of protecting data in ios apps?

Thanks in advance.

Example of my plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <dict>
        <key>quizName</key>
        <string>History</string>
        <key>quizDescription</key>
        <string>Check your knowledge about great historical events, who did what where to whom!</string>
        <key>quizImageName</key>
        <string>quiz-history.png</string>
        <key>questions</key>
        <array>
            <dict>
                <key>question</key>
                <string>In monarchy, for how long does the head of state rule?</string>
                <key>answers</key>
                <array>
                    <string>5 years</string>
                    <string>until someone else is elected</string>
                    <string>as long as he/she is the party leader</string>
                    <string>until death or abdication</string>
                </array>
                <key>correctAnswerIndex</key>
                <integer>3</integer>
            </dict>
            <dict>
                <key>question</key>
                <string>When was World War 2 fought?</string>
                <key>answers</key>
                <array>
                    <string>1935 - 1939</string>
                    <string>1914 - 1918</string>
                    <string>1939 - 1945</string>
                    <string>1918 - 1939</string>
                </array>
                <key>correctAnswerIndex</key>
                <integer>2</integer>
            </dict>
            <dict>
                <key>question</key>
                <string>Peloponnesian War was famous greek war between...</string>
                <key>answers</key>
                <array>
                    <string>Athens and Sparta</string>
                    <string>Greece and Persia</string>
                    <string>Athens and Attica</string>
                    <string>Greece and Macedonia</string>
                </array>
                <key>correctAnswerIndex</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>question</key>
                <string>Battle of the Pyramids was fought between which two forces?</string>
                <key>answers</key>
                <array>
                    <string>Egypt and Rome</string>
                    <string>French and Mamluk</string>
                    <string>Egypt and Persia</string>
                    <string>Mamluk and Rome</string>
                </array>
                <key>correctAnswerIndex</key>
                <integer>1</integer>
            </dict>
            <dict>
                <key>question</key>
                <string>First Winter Olypmics were held in...</string>
                <key>answers</key>
                <array>
                    <string>Italy, 1920</string>
                    <string>Germany, 1921</string>
                    <string>England, 1928</string>
                    <string>France, 1924</string>
                </array>
                <key>correctAnswerIndex</key>
                <integer>3</integer>
            </dict>
        </array>
    </dict>
    <dict>
        <key>quizName</key>
        <string>Animal kingdom</string>
        <key>quizDescription</key>
        <string>Not sure how many legs does the spider have? Test your knowledge and find out!</string>
        <key>quizImageName</key>
        <string>quiz-animals.png</string>
        <key>questions</key>
        <array>
            <dict>
                <key>question</key>
                <string>Where were the cats domesticated?</string>
                <key>answers</key>
                <array>
                    <string>In Greece, around 500 B.C.</string>
                    <string>In ancient Egypt, around 1.600 B.C.</string>
                    <string>In China, around 2.000 B.C.</string>
                    <string>In Mongolia, around 1.400 B.C.</string>
                </array>
                <key>correctAnswerIndex</key>
                <integer>1</integer>
            </dict>
            <dict>
                <key>question</key>
                <string>Dogs have a range of hearing of...</string>
                <key>answers</key>
                <array>
                    <string>approximately 40 Hz to 60,000 Hz</string>
                    <string>approximately 10,000 Hz to 60,000 Hz</string>
                    <string>approximately 40 Hz to 5,000 Hz</string>
                    <string>approximately 5,000 Hz to 30,000 Hz</string>
                </array>
                <key>correctAnswerIndex</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>question</key>
                <string>Meerkats can be found where?</string>
                <key>answers</key>
                <array>
                    <string>Australia</string>
                    <string>north Africa and south-west Asia</string>
                    <string>south Africa</string>
                    <string>Africa and Australia</string>
                </array>
                <key>correctAnswerIndex</key>
                <integer>2</integer>
            </dict>
            <dict>
                <key>question</key>
                <string>Biggest mammal is...</string>
                <key>answers</key>
                <array>
                    <string>Blue whale</string>
                    <string>Elephant</string>
                    <string>Killer whale</string>
                    <string>Rhinoceros</string>
                </array>
                <key>correctAnswerIndex</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>question</key>
                <string>Which of these animals sheads it&apos;s skin?</string>
                <key>answers</key>
                <array>
                    <string>monkey</string>
                    <string>narwal</string>
                    <string>snake</string>
                    <string>cow</string>
                </array>
                <key>correctAnswerIndex</key>
                <integer>2</integer>
            </dict>
        </array>
    </dict>
</array>
</plist>

Upvotes: 0

Views: 1125

Answers (1)

nebs
nebs

Reputation: 4989

If all you want is to encrypt your plist files then have a look at this SO question.

If you really want sqlite, then instead of dealing with sqlite directly, have a look at CoreData. Core data is an Apple framework which makes it very easy to store and fetch data using NSObjects and relationships. Core data can use sqlite for storage if you want. There's a fairly steep learning curve but it's worth learning since it's a very useful framework to master.

Keep in mind the sqlite DB is just stored in a file which anyone can read by default. So you'll need a little more effort to encrypt it.

Upvotes: 1

Related Questions