要基于 atbreuer11 给出的答案,您可以将 CGPoint 转换为 NSValue,将其存储在 NSMutableArray 中,然后使用以下命令将其转换回来:
//Convert CGPoint and Store it
CGPoint pointToConvert = CGPointMake(100.0f, 100.0f);
NSValue *valueToStore = [NSValue valueWithCGPoint:pointToConvert];
NSMutableArray *arrayToKeep =[NSMutableArray arrayWithObject:valueToStore];
然后再次恢复:
CGPoint takeMeBack;
for (NSValue *valuetoGetBack in arrayToKeep) {
takeMeBack = [valuetoGetBack CGPointValue];
//do something with the CGPoint
}
这可能是最简单的方法。您可以编写一个完整的类并进行所有类型的数据操作,但我认为这将是一种矫枉过正,除非您真的必须这样做。
编辑
对于 Swift 5(我不确定为什么要这样做,因为我们现在可以使用文字数组,但是这里是):
保存值:
let somePoint = CGPoint(x: 200, y: 400)
let array = NSMutableArray(array: [somePoint])
要检索它:
let points = array.compactMap({ ($0 as? NSValue)?.cgPointValue })