V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
coupgar
V2EX  ›  iDev

float型怎样赋值给CGFloat类型?

  •  
  •   coupgar ·
    coupgar · 2011-10-28 15:43:30 +08:00 · 12427 次点击
    这是一个创建于 4565 天前的主题,其中的信息可能已经有所发展或是发生改变。
    是这样的,我现在要往coredata里面存一个float类型的数,而coredata里面的存储模型是NSNumber,我写下面的一个语句,但一直编译不通过,有知道原因的不?

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

    这样的话是什么问题呢?
    Kai
        5
    Kai  
    MOD
       2011-10-28 16:30:36 +08:00
    @coupgar 那应该是 NSManagedObject 的问题?检查一下 .xcdatamodel 文件后新建一个试试看?
    coupgar
        6
    coupgar  
    OP
       2011-10-28 16:32:46 +08:00
    @Kai 恩,那我试试,多谢
    clowwindy
        7
    clowwindy  
       2011-10-28 18:58:18 +08:00 via Android
    用cgmakepoint得到一个新cgpoint,而不是修改.x
    coupgar
        8
    coupgar  
    OP
       2011-10-29 14:40:46 +08:00
    @clowwindy 果然用CGMakePoint就好了,不过能不能解释一下原因啊?难道.x不能够直接在外部操作吗?
    clowwindy
        9
    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
        10
    elden  
       2011-10-30 12:07:46 +08:00
    函数/方法返回的结构体是副本(copy)
    elden
        11
    elden  
       2011-10-30 12:23:30 +08:00
    看错。。。。
    可能是因为无法对结构体成员进行KVO的原因,所以apple不让修改UIView里面结构体的值。如果提供修改view.center.x,就会要求手动调用类似updateCenter的方法去更新view
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   889 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 104ms · UTC 21:00 · PVG 05:00 · LAX 14:00 · JFK 17:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.