10 ms·
Swift Blog
- deleted 12y ago[deleted]
- Kluny 12y agoHas anyone used Swift yet? Report please?
- archagon 12y agoI've been using it for my latest project. Haven't done anything too fancy with it yet. Lack of automatic type conversion between ints and floats is driving me up the wall a little bit, but maybe that's a personal flaw rather than a flaw with the language. String manipulation is also incredibly confusing to me: I have yet to figure out how to get the number of characters in a string, or how to generate a random character. Other than that, it feels pretty nice to use. EDIT: also how to get character n in a string.
- josephlord 12y ago.utf16count will get you the number of characters in a simple string[0]. [0] What is a character especially in various non-latin scripts? I think it is well handled in Swift, from what I can see it has been considered carefully but I haven't yet needed to get my head round it. Edit: Corrected - too fast in the playground and actually checked an array. .utf16count not .count
- josephpmay 12y agoI believe Apple says to use countElements(string) instead of string.count
- archagon 12y agoYeah, I understand why they did it, but the fact of the matter is that I'm using ASCII 99% of the time.
- pjmlp 12y agoBut not the rest of the world.
- mythz 12y agoYou can add your own operator overloading of different number types to mitigate the casting required see: https://github.com/jquave/EasyCast https://github.com/jquave/EasyCast You can also add your own String extension for length and index character at in a String with: extension String { var length: Int { return countElements(self) } subscript (i: Int) -> String { return String(Array(self)[i]) } } Which will now let you use `.length` on strings, e.g: "Cat".length; //3 And get the character at index with: "Cat"[1]; //a I've more useful extensions at: https://github.com/mythz/swift-linq-examples/blob/master/src/LinqExamples/extensions.swift https://github.com/mythz/swift-linq-examples/blob/master/src... Which enables LINQ-like querying in Swift: https://github.com/mythz/swift-linq-examples https://github.com/mythz/swift-linq-examples
- TylerE 12y agoIn general, there are good reasons to not do implicit casts, especially between ints and floats. For one, it's actually a fairly expensive operation.
- JoshTheGeek 12y agocountElements(string) returns the number of Unicode code points in a string. I'm not sure about the random character, though. Swift is very much oriented towards Unicode rather than bytes when it comes to strings.
- josephpmay 12y agoTo get the number of characters in a string, call countElements(string). To generate a random character, your best bet (IMO, someone else may have a more elegant solution) is to have an array (or dictionary) or characters and use a random number generator to select a character from the structure.
- mikeash 12y agoIf you have a range of unicode code points that you want to select from, you can generate a random number in that range and then turn it into a one-character string like so: let codepoint: UInt32 = ...random choice code here... let scalar = UnicodeScalar(codepoint) let string = String(scalar)
- josephlord 12y agoIt would be easier to do this from an array of strings but I found an ugly inefficient way to do it from the characters in an arbitrary string: func randChar(alphabet:String?)->String { let alpha = alphabet ? alphabet! : "abcdefghijklmnopqrstuvwxyz" let rand:Int = Int(arc4random_uniform(UInt32(countElements(alpha)))) var gen = alpha.generate() for i in 0..<rand { gen.next() } return String(gen.next()!) } mikeash obviously has the answer if the codepoints are consecutive. This was quite annoying to do, more so than I expected. If you convert to UTF16 view you can alter the index by advanceBy but then I couldn't find an easy way to convert back from the UInt16 to a Character/String but mikeash also covers that. However I'm not sure that conversion to UTF16 is any less work internally than iterating through the index.
- micampe 12y agoHere is a great article about strings in Swift: http://oleb.net/blog/2014/07/swift-strings/ http://oleb.net/blog/2014/07/swift-strings/ Short story: “number of characters” and “nth character” are more complicated questions than you might think when you deal with full Unicode text.
- archagon 12y agoRight, but it's a problem when you're mostly dealing with ASCII identifiers and so forth. Looks like a great article, thanks!
- josephpmay 12y agoThere's been a lot of prior discussion about Swift on HN. I think the general consensus is that it's a fun and somewhat-well designed language that's buggy in places but will eventually make a good Objective-C replacement. I personally have enjoyed playing around with it. If Apple open-sources it, I could see using it as my main language (to replace Java, which I hate).
- dnissley 12y agoWhy wait? There's already a language that bears a strong resemblance to Swift and it even has Java interop baked in. That would be Scala.
- josephpmay 12y agoI want to get away from the JVM
- revscat 12y agoMind if I ask why?
- josephpmay 12y agoThese are probably not very good reasons, however: -It's slow -It's annoying for testing -It's run by Oracle -It feels antiquated
- curtis17 12y agoSame here. I want to get away from Java and the JVM. Twenty years old and now owned by Oracle.
- zmmmmm 12y agoIf you want a strong resemblance, Swift looks spookily like Groovy - to the point where I have to actually check sometimes that I'm not reading Groovy code. I would say much more so than Scala.
- joeblau 12y agoYes. I've built two apps on it. One is an Emoji Social network like Yo, but with Emojis, and the other is a Weather app that uses forecast.io. This is what I've been telling everyone. Swift does not make most of iOS App development easier; For the average person, the only benefit your'e going to get is no header files and 0%-30% shorter class files. The majority of iOS is about learning the libraries and API's. The main benefit of of Swift for the common user are that you can easily define and use your variables without giving them a type. There are also some niceties in Swifts functional programming style. As a developer on the iOS platform for the past 6 years, my problems were never with obj-c, they were with all of the "other stuff." If you don't understand how to layout an app and use a UITableViewController correctly, Swift doesn't help. If you don't understand the delegate callback or segue design patterns, Swift doesn't help. If you don't understand the PKI required to create your Dev and Prod certificates, Swift doesn't help. If you don't don't know to use Interface Builder to connect your UI's to your controllers, Swift doesn't help. If you don't know what keys to put in your info.plist to tweak the status bar or import certain settings, Swift doesn't help. Now from the advanced developer perspective, Swift is amazing. If you have a chance to watch Apple's advanced Swift talk (404 Advanced Swift), that's where you really see the power of the language come into it's own. You can literally re-write the language with the language. Mattt Thompson published a public gist[1] a few days ago where he showed how you can define mathematical constructs of unicode characters that aren't natively defined in the language. So for example, you could define the symbol square root. operator prefix √ {} @prefix func √ (value: Double) -> Double { return sqrt(value) } √25 // Outputs 5.0 Obviously, you'd have to do a bit more work on that to handle negative square roots and get into imaginary numbers, but things like this give you a glimpse into the power of the language. The real power of Swift is probably not going to be used by a lot of app Developers, but the potential of the language is a lot better than Objective-C ever had. Plus, you can now use emoji's as variables so that right there is worth learning it. [1] - https://gist.github.com/mattt/f457625af116721ffb57 https://gist.github.com/mattt/f457625af116721ffb57
- Xcelerate 12y ago> If you don't understand how to layout an app and use a UITableViewController correctly, Swift doesn't help. If you don't understand the delegate callback or segue design patterns, Swift doesn't help. If you don't understand the PKI required to create your Dev and Prod certificates, Swift doesn't help. If you don't don't know to use Interface Builder to connect your UI's to your controllers, Swift doesn't help. If you don't know what keys to put in your info.plist to tweak the status bar or import certain settings, Swift doesn't help. So I learned Swift in like a day, but all that stuff you listed I have absolutely no clue about. I just began iOS development and it's kind of overwhelming to open Xcode for the first time to see 57 different panels with 33 options in each panel (compared to opening Vim for instance haha). What would you recommend as a good resource for learning the "correct" way to use things like UITableViewController? Of course I can hack together an app that functions well enough but I'd like to use the API in the proper, idiomatic way if possible.
- matthewwiese 12y agoI like the idea of a blog, something where I can get official news and tips from is great. Perfect supplemental reading for all those blogs run by outside developers. I look forward to using Swift. Also, for those that may have missed it, you can use Swift in XCode 6 beta, so long as you are a registered Apple Developer.
- wonderzombie 12y agoSlightly off-topic: is this the first time Apple has hosted a blog? I realize it's developer.apple.com rather than apple.com, but still.
- CodeWithCoffee 12y agoSteve Jobs blogged on Apple's main site https://www.apple.com/hotnews/ https://www.apple.com/hotnews/, including the famous Thoughts on Flash article https://www.apple.com/hotnews/thoughts-on-flash/ https://www.apple.com/hotnews/thoughts-on-flash/.
- clayallsopp 12y agoWow, this is an interesting/refreshing development from Apple. I can't recall them ever having a public blog to communicate with their developer community. Until now, it's mostly been through their developer forums, private support, and in-person at the yearly WWDC. How they've developed as a developer-facing company this year is really encouraging. Google et al have always been transparent as glass relative to Apple's iOS work, but this blog, the twitter dialog from Swift's development team, and the no-NDA release of iOS8 has really changed my opinion of the direction they're pushing the ecosystem.
- hugi 12y agoSurfin' Safari (https://www.webkit.org/blog/ https://www.webkit.org/blog/) is another great Apple developer blog. I followed it religiously back when Webkit was leaving everyone else in the dust.
- frik 12y agoAlso, the Webkit Community Blog: http://planet.webkit.org http://planet.webkit.org e.g. Adobe is contributing a lot of technology like CSS Regions And Brent Fulgham maintain a Windows build of Webkit: http://whtconstruct.blogspot.com http://whtconstruct.blogspot.com
- darthgoogle 12y agoWell, let's just wait and see, because frankly, I'm tired of reading marketing fluff like "We can’t wait to see what you build!". After years in the making (which means plenty of time to think of an answer), one of the most important questions still hasn't been answered, and not even mentioned on the blog. Namely, will Swift be open-source and submitted to standards bodies? Will key libraries also be released? If I make an investment to learn Swift, what are the chances that I can take this knowledge and use it outside of the Apple ecosystem? Or is Swift destined to follow the fate of Objective-C and be completely useless outside of Mac/iOS apps?
- kennywinker 12y ago
- BlackLamb 12y agoGreat timing, was just reading the Swift ebook let interestingNumbers = [ "Prime": [2, 3, 5, 7, 11, 13], "Fibonacci": [1, 1, 2, 3, 5, 8], "Square": [1, 4, 9, 16, 25], ] var largest = 0 for (kind, numbers) in interestingNumbers { for number in numbers { if number > largest { largest = number } } } largest Excerpt From: Apple Inc. “The Swift Programming Language.”
- josephlord 12y agoNote that if you downloaded the original book into iBooks you need to delete it and download it again to get the version that matches Beta3 (fixed array semantics and new range operator ..<)
- tjl 12y agoDid both the Swift books get updated or just the one?
- josephlord 12y agoIt looks like they both did along with examples. I don't know if the changes are significant[0]. Revision history for main book: https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/RevisionHistory.html https://developer.apple.com/library/prerelease/ios/documenta... [0] https://developer.apple.com/library/prerelease/ios/navigation/ https://developer.apple.com/library/prerelease/ios/navigatio... and search for "swift". All the docs seem to have July dates.
- kennethfriedman 12y agoIt's really great to see Apple opening up - maybe not in their products, but in their culture. Programming language blog, a presence on social networks (mostly Twitter), posing for pictures with devs at WWDC, and generally embracing the dev community. All of these individual things seem small but together show a much more open side of Apple. A side effect of these changes: Apple can control their own story now; whereas the rumor mill and the Apple-Needs-To-Release-A-New-Category-In-The-Next-30-Days-Or-They-Are-Doomed websites have been controlling their story/image for the past couple years.
- arturhoo 12y agoI am currently downloading XCode 6.3 Beta [1] without being a registered developer (used my ordinary credentials), does that mean that I will be able to write applications and play with the REPL? Has it just been made available? [1] https://developer.apple.com/devcenter/download.action?path=/Developer_Tools/xcode_6_beta_3_lpw27r/xcode_6_beta_3.dmg https://developer.apple.com/devcenter/download.action?path=/...
- Osmium 12y agoI believe so–that's what the blog says at least! Would've been nice if they'd done this from the start (says someone who just paid his registration fee last month solely for access to the new XCode beta/Swift) but better late than never. Maybe there was some strategic value in only letting paying devs have access it for the first month or so as the news settled in...
- josephlord 12y agoBeta 1 was really pretty flakey and Xcode tended to crash every 20 minutes or so. Beta 3 is much better. I suspect the quality and readiness for a potentially less friendly audience is what caused them to keep it to registered devs rather than an attempt to get more cash. Hopefully you end up getting some value from your registration. You could always ask for a refund but I don't know if they would give it to you.
- Osmium 12y ago> I suspect the quality and readiness for a potentially less friendly audience is what caused them to keep it to registered devs rather than an attempt to get more cash. Probably true. > Hopefully you end up getting some value from your registration. Definitely got some value :) For one, I had the time to play around with it last month, that I don't have this month, so for that alone it was worth it. So not bitter about it!
- Karunamon 12y agoHuh, that worked with my non-dev alt account too. Count yourself lucky, that's probably not going to last long. Xcode itself doesn't do any server side verification of your developer status to let itself run, so you'll be able to do everything aside from sign and sell apps.
- equalarrow 12y agoThis is great news. Apple seems to be going the proactive route with all this. I think that's a really good idea on their part. That said, as soon as I saw Swift was announced, I took the plunge and started my own journal about learning Swift. http://www.swiftpursuit.com http://www.swiftpursuit.com Figured I'd document my progress as I went along and it's been a lot of fun so far. This is something I plan on doing over the long haul and I'd like to get in some small 5-10 min videos that covers not only the language but also new things coming out in XCode as well. I'm two posts behind, but I'm trying to release a new post every week. My biggest slow down has just been figuring out the blogging software and hosting.
- deleted 12y ago[deleted]