float型怎样赋值给CGFloat类型?

2011-10-28 15:43:30 +08:00
 coupgar
是这样的,我现在要往coredata里面存一个float类型的数,而coredata里面的存储模型是NSNumber,我写下面的一个语句,但一直编译不通过,有知道原因的不?

point.x = [circle.point_x floatValue]; //point.x 是CGFloat类型,point_x是NSNumber
12590 次点击
所在节点    iDev
11 条回复
Kai
2011-10-28 15:53:44 +08:00
point_x = [NSNumber numberWithFloat:point.x];
coupgar
2011-10-28 16:04:04 +08:00
@Kai 这个反了,现在要把point_x的值赋给point.x
Kai
2011-10-28 16:21:53 +08:00
@coupgar [point_x floatValue];
coupgar
2011-10-28 16:25:19 +08:00
@Kai 那样还是和我上面的方法一样的啊,但是编译器提示expression is not assignable.

这样的话是什么问题呢?
Kai
2011-10-28 16:30:36 +08:00
@coupgar 那应该是 NSManagedObject 的问题?检查一下 .xcdatamodel 文件后新建一个试试看?
coupgar
2011-10-28 16:32:46 +08:00
@Kai 恩,那我试试,多谢
clowwindy
2011-10-28 18:58:18 +08:00
用cgmakepoint得到一个新cgpoint,而不是修改.x
coupgar
2011-10-29 14:40:46 +08:00
@clowwindy 果然用CGMakePoint就好了,不过能不能解释一下原因啊?难道.x不能够直接在外部操作吗?
clowwindy
2011-10-30 11:41:07 +08:00
我猜你一定是改UIView.center.x(或类似情况)才产生这个error吧。从设计上,这种操作要调[UIView setCenter:](即UIView.center=),UIView才能知道你修改了center,然后更新视图。如果只修改结构体,而不调用setCenter,UIView没办法知道你修改了center。
不过我不清楚苹果是如何实现.center.x=xxx的时候产生编译错误的。
elden
2011-10-30 12:07:46 +08:00
函数/方法返回的结构体是副本(copy)
elden
2011-10-30 12:23:30 +08:00
看错。。。。
可能是因为无法对结构体成员进行KVO的原因,所以apple不让修改UIView里面结构体的值。如果提供修改view.center.x,就会要求手动调用类似updateCenter的方法去更新view

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/20347

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX