2011-11-16 81 views
1

我试图找到一种方法将CGPoint存储在核心数据数据库中。将CGPoint高效存储在核心数据中

搜索后发现,有一种方法可以做到这一点,将有一个实体(在我的情况下的Point2D)与x和y属性。这两个浮点数映射到NSNumber。

的问题是,为了得到点回来,我有我的Point2D NSManagedObject sublass以下方法:

- (CGPoint) cgPointValue { 
    return CGPointMake([self.x floatValue], [self.y floatValue]); 
} 

和它的作品,但我有很多穴位的它似乎是占用CPU。

我想知道是否有更有效的方法来做到这一点。

回答

8

我觉得没有办法节省一些CPU时间在这种情况下,事件与下面的代码,它会做同样的事情,也许更少,也许更多:

// >>> Saving result string int CoreData 
CGPoint point = CGPointMake(20.0f, 20.f); 
NSString *pointToSavae = NSStringFromCGPoint(point); // Will store string {20,20} 

// >> Restoring point from string, retrieved from CoreData 
CGPoint pointFromString = CGPointFromString(pointToSavae); 
+0

好的,谢谢。我修正它将生成的CGPoint存储在ivar(NSValue)中,并在重新生成它之前检查它是否存在。然后在willChangeValueForKey上:我把伊娃设置为零。所以现在它只会在它改变时生成它。 – Odrakir