在NSMutableArray和Sqlite中存储CGPoints

3
我希望在每次调用touchesMoved时存储点。到目前为止一切都很顺利。然而,我想做的是每次调用touchesMoved时创建一个“新”的数组。例如,一旦触摸结束,点的数组将通过标识符1保存到数据库中。下一次调用touchesMoved时,数组被清空并替换为具有不同标识符的另一组点。我尝试在touchesEnded中每次递增一个整数,但是我发现该整数每次touch ended后都保持不变。那么我该怎么做呢?任何帮助将非常感激。
更新: 例如,我的数组中记录了这些点:
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并结束,新记录的点集将带有不同的标识符保存。你有什么想法如何做到这一点吗?

1个回答

12

要在NSMutableArray中存储CGPoint,请执行以下操作

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

//Now getting the cgpoint back
CGPoint point = [[yourCGPointsArray objectAtIndex:0] CGPointValue];

是的,我已经完成了这个。我想要的是每次触摸结束时,所有记录的CGPoints都将使用单个标识符保存在数据库中。然后,一旦再次移动和结束触摸,记录的点将使用不同的标识符存储到数据库中。你有任何想法如何做到这一点吗? - Anna Fortuna
只需使用上述方法,并将每个创建的数组存储到NSDictionary中。该字典将存储所有数组,您可以使用NSNumber或NSDate来“标识”每个NSArray。您可以获取字典的最后一个对象并加一(假设您已将NSNumber用作标识符-您只需将其强制转换为NSInteger,增加并再次转换)。有很多不同的方法可以创建“标识符”。 - LJ Wilson
我的问题是数组没有被“刷新”。我的意思是,每次调用touchesMoved时,我希望数组清空并记录一组新的点。这就是“标识符”的目的,让我知道某些点的数组与另一个点的数组分开。虽然我希望这有意义。 - Anna Fortuna
好的,那么只需让NSMutableDictionary(原始注释应该反映出这一点)仅包含一个对象,并在添加具有不同(或相同)标识符(键)的新对象(NSArray)之前删除对象(NSArray)。 - LJ Wilson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接