Развертывание sqlite DB на обновлении приложения для iPhone

// 2d массив с движением игрока в случайной стартовой позиции

  import java.util.Scanner;
  import java.util.Random;
  public class Components 
  {
  public Components() 
  {     
    Graph();
  }

int Row,Col,Num1,Num2;
char Move;
boolean Running = true;
Scanner input = new Scanner(System.in);

void TwoArray(int gph [][])
{
    for(int i=0;i<Row;i++)
    {
    for(int x=0;x<Col;x++)
    {
    System.out.print(gph[i][x] + "\t");
    }
    System.out.println();
    }
}

void Graph() 
{
    Random random = new Random();
    System.out.println("Please Enter The Number Of Row:");
    Row = input.nextInt();
    System.out.println("Please Enter The Number Of Columns:");
    Col = input.nextInt();
    Num1 = random.nextInt(Row) + 1;
    Num2 = random.nextInt(Col) + 1;
    int Array[][] = new int [Row][Col];
    for(int i=0;i<Row;i++)
    {
    for(int x=0;x<Col;x++)
    {
    Array[i][x] = 0;
    }
    }
    Array[Num1][Num2] = 1;
    int p1 = Num1;
    int p2 = Num2;
    TwoArray(Array);
    while(Running)
    {
    Move = input.next().charAt(0);
    switch(Move)
    {
    case 'w':
    case 'W':
    Array[p1][p2] = 0;
    Array[p1-=1][p2] = 1;
    TwoArray(Array);
    break;
    case 's':
    case 'S':
    Array[p1][p2] = 0;
    Array[p1+=1][p2] = 1;
    System.out.flush();
    TwoArray(Array);
    break;
    case 'd':
    case 'D':
    Array[p1][p2] = 0;
    Array[p1][p2+=1] = 1;
    System.out.flush();
    TwoArray(Array);
    break;
    case 'a':
    case 'A':
    Array[p1][p2] = 0;
    Array[p1][p2-=1] = 1;
    System.out.flush();
    TwoArray(Array);
    break;
    case 'l':
    case 'L':
    Running = false;
    input.close();
    break;
    default:
    System.out.println("Please Press Proper Keys!");
    break;
    }
    }
    }
   }
9
задан 4thSpace 18 February 2009 в 07:09
поделиться

2 ответа

cdespinosa описал сценарий № 1 хорошо, таким образом, я займусь № 2.

Я еще не сделал этого на iPhone, но на настольной среде самый легкий способ обработать, это должно сохранить Ваши данные конфигурации в отдельной базе данных. Можно присоединить к нескольким базам данных скорее легко. Запустите путем открытия основной базы данных, которая должна, вероятно, быть базой данных, которая может измениться. Затем sqlite3_exec ATTACH оператор, который похож на это:

ATTACH 'filepath' AS config;

С тех пор можно сделать что-то вроде этого:

SELECT * FROM UserTableName;
SELECT * FROM config.ConfigurationTableName;

Это - мое понимание, что, если Вы пишете в базу данных конфигурации, приложение приведет проверку подписи к сбою и не запустится, и версия SQLite, включенного с iPhone, является достаточно взрослой для не поддержки флага только для чтения. Поэтому необходимо скопировать файл базы данных конфигурации в песочницу и открытый, которые копируют вместо того в пакете.

(Можно, конечно, использовать SQL и скопировать значения от одной базы данных до другого. Но если Вы уже копируете всю базу данных конфигурации в свою песочницу..., и необходимо быть... затем, это - просто дополнительный шаг. Просто присоединение.)

Я надеюсь, что кто-то еще может предоставить Вам больше деталей.:)

11
ответ дан 4 December 2019 в 13:05
поделиться

Когда пользователь обновляет приложение, старый комплект приложений удаляется, и новый комплект приложений установлен, но пользовательские данные, связанные с комплектом приложений, неповреждены.

Таким образом, Ваш выбор состоит в том, чтобы a) оставить Ваши данные в комплекте приложений (это будет заменено автоматически), или b) в одностороннем порядке скопировать его в пользовательскую область данных на первом показе (таким образом, Вы намеренно замените его на обновлении).

Я оставлю № 2 sqlite-хорошо-осведомленному человеку, но можно хотеть использовать тег "sqlite" вместо тега "mysql", если это - то, что Вы на самом деле делаете.

5
ответ дан 4 December 2019 в 13:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: