Хранение CGPoints в NSMutableArray и Sqlite

Я хотел бы сохранять точки всякий раз, когда вызывается touchesMoved. Пока все работает нормально. Однако я хочу создать «новый» массив каждый раз, когда вызывается touchesMoved. Например, после завершения касания массив точек сохраняется в базе данных с идентификатором 1. При следующем вызове touchesMoved массив очищается и заменяется другим набором точек с другим идентификатором. Я пытался увеличивать целое число в touchesEnded каждый раз, когда оно вызывается, но понял, что целое число будет оставаться неизменным каждый раз, когда касание завершается. Итак, как я это сделаю? Любая помощь будет очень признательна.

ОБНОВЛЕНИЕ: Например, у меня есть записанные точки в моем массиве:

100.000, 200.000
100.000, 202.000
100.000, 204.000

Эти точки будут сохранены в базе данных с идентификатором, скажем, 1.

1 | 100.000 | 200.000
1 | 100.000 | 202.000
1 | 100.000 | 204.000

Теперь, когда касания переместились и снова закончились, новый набор записанных точек будет сохранен с другим идентификатором, допустим 2.

2 | 200.000 | 300.000
2 | 200.000 | 302.000
2 | 200.000 | 304.000

Итак, в основном я хочу, чтобы каждый раз, когда вызывается touchesMoved, он записывал точки, которые будут сохранены в массиве. Когда касания закончились, эти записанные точки будут сохранены с идентификатором. И, как только touchesMoved будет вызван снова и завершится, новый набор записанных точек будет сохранен с другим идентификатором. Любые идеи, как это сделать?


person Anna Fortuna    schedule 18.06.2012    source источник


Ответы (1)


Чтобы сохранить CGPoint в NSMutableArray, сделайте это

NSMutableArray *yourCGPointsArray = [[NSMutableArray alloc] init];
[yourCGPointsArray addObject:[NSValue valueWithCGPoint:CGPointMake(100, 100)]];

//Now getting the cgpoint back
CGPoint point = [[yourCGPointsArray objectAtIndex:0] CGPointValue];
person Omar Abdelhafith    schedule 18.06.2012
comment
Да я это уже сделал. Я хочу, чтобы каждый раз, когда касания заканчивались, все записанные CGPoints сохранялись в базе данных с одним идентификатором. Затем, как только касания переместятся и снова закончатся, записанные точки будут сохранены в базе данных с другим идентификатором. Есть идеи, как это сделать? - person Anna Fortuna; 18.06.2012
comment
Просто используйте описанный выше метод и сохраните каждый созданный массив в NSDictionary. Словарь будет хранить все массивы, и вы можете использовать NSNumber или NSDate для идентификации каждого NSArray. Вы можете получить последний объект Словаря и увеличить его на единицу (при условии, что вы использовали NSNumber для идентификатора — вы просто выполняете приведение как NSInteger, увеличиваете и возвращаете обратно). Множество различных способов создания идентификатора. - person LJ Wilson; 18.06.2012
comment
Моя проблема в том, что массив не обновляется. Я имею в виду, что я хочу, чтобы массив очищался и записывал новый набор точек каждый раз, когда вызывается touchesMoved. Это цель идентификатора, чтобы я знал, что определенный массив точек отделен от другого массива точек. Я надеюсь, что это имеет смысл. - person Anna Fortuna; 18.06.2012
comment
Хорошо, тогда просто пусть этот NSMutableDictionary (исходный комментарий должен был отразить это) содержит только один объект и просто удаляет объект (NSArray) перед добавлением нового объекта (NSArray) с другим (или тем же) идентификатором (Ключ). - person LJ Wilson; 18.06.2012