Μετάβαση στο περιεχόμενο


Φωτογραφία

Ερωτηση για update εφαρμογής


  • Παρακαλούμε συνδεθείτε για να απαντήσετε
4 μηνύματα σε αυτό το θέμα

#1   axelpart

axelpart

    iPH newbie

  • 4 μηνύματα
  • Φύλο: Άντρας
  • Κινητό: iPhone 3GS

Δημοσίευση 30/10/2014 - 15:36

Καλησπέρα σε όλους. Είμαι έτοιμος να αναιβάσω στο App store ένα Quiz game και η απορία μου είναι η εξής. Χρησιμοποιώ την Sqlite για να καρατάω τα High Score του χρήστη. Όταν αναιβάσω την επόμενη updated version του παιχνιδιού τι θα γίνει με τα σκορ του χρήστη σβήνονται; Αν ναι ξέρεις κανείς τι πρέπει να κάνω ώστε να μην σβήνονται ή δεν γίνεται αυτό που φαντάζομαι. Ευχαριστώ εκ των προτέρων.



Ad

Ad

Team
iPhoneHellas
3,1416 μηνύματα
Twitter: @android
Φύλο: Όπως το δει κανείς
Κινητό: Android
Tablet: Για τα κουνούπια

Γιατί να γίνετε μέλη;

#2   valsamis

valsamis

    iPH Elite Poster

  • 2579 μηνύματα
  • Φύλο: Άντρας
  • Κινητό: iPhone 6

Δημοσίευση 30/10/2014 - 15:40

Καλησπέρα σε όλους. Είμαι έτοιμος να αναιβάσω στο App store ένα Quiz game και η απορία μου είναι η εξής. Χρησιμοποιώ την Sqlite για να καρατάω τα High Score του χρήστη. Όταν αναιβάσω την επόμενη updated version του παιχνιδιού τι θα γίνει με τα σκορ του χρήστη σβήνονται; Αν ναι ξέρεις κανείς τι πρέπει να κάνω ώστε να μην σβήνονται ή δεν γίνεται αυτό που φαντάζομαι. Ευχαριστώ εκ των προτέρων.

δεν θα εχεις θεμα, δεν χανετε η database! ΑΠΛΑ αν το νεο σου update η sql εχει διαμορφομενα tables, columns κτλ θα πρεπει να την κανεις update! σου συνηστω να κρατας ενα table με το varsion και σε update αν χρειαζετε η εφαρμογη να κανει alter τα tables


IOS Developer & Instructor    www.valsamis.me


#3   axelpart

axelpart

    iPH newbie

  • 4 μηνύματα
  • Φύλο: Άντρας
  • Κινητό: iPhone 3GS

Δημοσίευση 30/10/2014 - 18:04

Ευχαριστώ πολύ για την υπόδειξη Valsamis. Μήπως έχεις κάνενα tutorial υπόψην γιατί δεν έχω ιδέα πως ν το κάνω με τη version.



#4   valsamis

valsamis

    iPH Elite Poster

  • 2579 μηνύματα
  • Φύλο: Άντρας
  • Κινητό: iPhone 6

Δημοσίευση 30/10/2014 - 18:41

εδω εχω κωδικα απο μια εφαρμογη μου!

 διαβαζει αν υπαρχει το sql aρχειο period.db αν οχι τοτε φτιαχνει την database

 

τωρα σκευτομαι.... αν διαβασει οτι υπαρχει τοτε αν εχεις ενα νεο table μπορεις να το φτιαξεις αν δεν υπαρχει ηδη οπως ειναι στο κωδικα: 

CREATE TABLE IF NOT EXISTS PERIODHISTORY      το if not exists το δημηουργει μονο αν δεν υπαρχει

 

τωρα αν θες να τροποποιησεις ενα table θα πρεπει να φτιαξεις ενα table       APPLICATION_DB_VER  π.χ.    και να εχει ενα column με ονομασια version

το version θα εχει το 1    σαν πρωτη φορα

 

αν πρεπει να τροποποιησεις στο update της εφαρμογης σου θα βαλεις στην αρχη να διαβαζει αν η τιμη του version ειναι 1, αν ναι τοτε θα κανεις alter και θα το αποθηκευσεις σαν 2!!!

 

αν εχεις και επομενο update θα διαβαζει αν ειναι 1 η2 και θα πρατει αναλογα

 

καπως ετσι πανω κατω

 

//sql----------------------------------------------------------

- (void)prepareDatabase {

    // Get the documents directory

    NSArray *dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *docsDir = dirPaths[0];

    

    // Build the path to the database file.

    databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent:@"period.db"]];

    //NSLog(@"DB Path: %@", databasePath);

    

    NSFileManager *filemgr = [NSFileManager defaultManager];

    

    if ([filemgr fileExistsAtPath: databasePath ] == NO) {

        const char *dbpath = [databasePath UTF8String];

        if (sqlite3_open(dbpath, &myDatabase) == SQLITE_OK) {

            char *errMsg;

            const char *sql_stmt = "CREATE TABLE IF NOT EXISTS PERIODHISTORY (rec INTEGER PRIMARY KEY AUTOINCREMENT, lastdate TEXT)";

            

            if (sqlite3_exec(myDatabase, sql_stmt, NULL, NULL, &errMsg) != SQLITE_OK) {

                NSLog(@"table1 not created");

            } else {

                NSLog(@"table1 created");

            }

            

            const char *sql_stmt3 = "CREATE TABLE IF NOT EXISTS PERIODHISTORY2 (rec INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, dt TEXT, status TEXT)";

            

            if (sqlite3_exec(myDatabase, sql_stmt3, NULL, NULL, &errMsg) != SQLITE_OK) {

                NSLog(@"table3 not created");

            } else {

                NSLog(@"table3 created");

            }

            

            const char *sql_stmt2 = "CREATE TABLE IF NOT EXISTS PERIODSETTINGS (rec INTEGER PRIMARY KEY AUTOINCREMENT, days TEXT, run INTEGER, fnot INTEGER, pregnant TEXT)";

            

            if (sqlite3_exec(myDatabase, sql_stmt2, NULL, NULL, &errMsg) != SQLITE_OK) {

                NSLog(@"table2 not created");

            } else {

                NSLog(@"table2 created");

            }

 

            sqlite3_close(myDatabase);

        } else {

            NSLog(@"db failed open/created");

        }

    }

}


IOS Developer & Instructor    www.valsamis.me


#5   axelpart

axelpart

    iPH newbie

  • 4 μηνύματα
  • Φύλο: Άντρας
  • Κινητό: iPhone 3GS

Δημοσίευση 03/11/2014 - 13:39

Ευχαριστώ Valsamis για το αναλυτικό παράδειγμα. Λόγο έλειψης χρόνου δεν κατάφερα ακόμη να δοκιμάσω κάτι αλλά κατάλαβα τη λογική. Θα ενημερώσω όταν θα έχω νέα.






Χρήστες που διαβάζουν αυτό το θέμα: 6

0 μέλη, 6 επισκέπτες, 0 ανώνυμοι χρήστες