> On 25 Feb 2015, at 00:14, Charles Jenkins <cejw...@gmail.com> wrote:
> 
> A structure?!? I did look it up in the documentation, and all I found was 
> “the basic type for all floating-point values.” That the basis of all 
> floating-point types could be a structure never occurred to me. Thanks!
> 
> Swift is a language I want to like, but currently it makes the easy stuff 
> hard without making the hard stuff any easier. 
> 
> — 


Well it’s a swift structure, which doesn’t really mean much more than it’s an 
object with copy semantics. It has a TypeAlias for double which is where it 
stores the value. So it’s a structure, but not possibly in the way you would 
naturally infer. I should have been clearer. 

Anyway if you type

var xx : CGFloat

 and then Cmd-Right-Click on the CGFloat you’ll see what it is and where I got 
the nativevalue thing from. 


> 
> Charles
> 
> On February 24, 2015 at 7:45:22 AM, Roland King (r...@rols.org 
> <mailto:r...@rols.org>) wrote:
> 
>> 
>>> On 24 Feb 2015, at 18:57, Charles Jenkins <cejw...@gmail.com 
>>> <mailto:cejw...@gmail.com>> wrote:
>>> 
>>> I’m surprised how painful it is to do trivial things in Swift.
>> 
>> I’ve stopped being surprised at this.
>> 
>> 
>>  Between the anal type checking and the spew of optionals I spend all my 
>> time fiddling around trying to get a ‘?’ in the right place or splitting 
>> lines up 
>> 
>> into
>> 
>> individual
>> 
>> expressions
>> 
>> so that I
>> 
>> can check the
>> 
>> type
>> 
>> of
>> 
>> each line
>> 
>> I’m hoping the improved error checking in the latest Swift 1.2 beta is going 
>> to help with this, but that version is currently buggy enough it crashes on 
>> my example code so I’m waiting for some of those bugs to get fixed before I 
>> try Swift again in earnest. 
>> 
>> 
>>> All I want to do is convert NSFont.pointSize to an NSNumber, but I can’t 
>>> figure out any syntax the Swift compiler will accept.
>>> 
>>> My latest fruitless attempt has involved trying to simply cast the value 
>>> into something for which NSNumber has a corresponding init():
>>> 
>>>     let size:Float = font.pointSize as Float
>>>     let points = NSNumber( float: size )
>>>   
>>> Neither Float nor Double works. What the heck is a Swift CGFloat that 
>>> seemingly makes it incompatible with everything else?
>> 
>> It’s a structure. Cmd-RightClick is your friend here. 
>> 
>> I ended up with this piece of slightly non-obvious code, there’s probably 
>> three other ways to do it. 
>> 
>> import Cocoa
>> 
>> let font = NSFont(name: "Helvetica", size: 29 );
>> let rs = NSNumber( double: font!.pointSize.native )
>> 
>> An example of the ‘fiddling about’ I was talking about, before I got to 
>> those lines, I thought I’d just check I had made the font I wanted by 
>> constructing an NSAttributedString with it, I had this
>> 
>> let str = NSAttributedString(string: "test string", attributes: [ 
>> NSFontAttributeName : font ] )
>> 
>> which gives an error message that there isn’t an initializer which accepts 
>> string: String, attributes : [ String, NSFont? ]. I split the line up to 
>> construct the attributes separately and defined it to be [ NSObject : 
>> AnyObject ] (which is what that initializer takes) and eventually stumbled 
>> on the realization I had to unwrap font in order for it to work. I spent a 
>> month nearly doing nothing but Swift and I never really got much better at 
>> it. Perhaps I’m too ancient and my brain is wired up wrong from years of C 
>> but I don’t find Swift an easy language to use at all and spend lots of 
>> unproductive time trying to sort out silly things like the above. 

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to