{"id":3983,"date":"2018-08-22T14:58:07","date_gmt":"2018-08-22T14:58:07","guid":{"rendered":"https:\/\/blog.jetbrains.com\/objc\/?p=6611"},"modified":"2018-08-22T14:58:07","modified_gmt":"2018-08-22T14:58:07","slug":"swift-keypaths-completion","status":"publish","type":"appcode","link":"https:\/\/blog.jetbrains.com\/fr\/appcode\/2018\/08\/swift-keypaths-completion","title":{"rendered":"AppCode starts 2018.2.2 EAP: completion for Swift key paths"},"content":{"rendered":"<p>Hi everyone, <\/p>\n<p>Today we are starting the Early Access Program for AppCode 2018.2.2. Build <strong>182.4323.4<\/strong> is now available for download on <a href=\"https:\/\/www.jetbrains.com\/objc\/nextversion\/\" target=\"_blank\" rel=\"noopener\">our site<\/a>.<\/p>\n<h2 id=\"new_features\">New features<\/h2>\n<p>Have a working completion for Swift key paths:<br \/>\n<img decoding=\"async\" alt=\"Completion for keypaths\" width=\"455\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2018\/08\/objc-keypath@2x.gif\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2018\/08\/objc-keypath@2x.png\"\/><br \/>\nCompletion in <code>#keypath()<\/code> (<a href=\"https:\/\/youtrack.jetbrains.com\/issue\/OC-15059\" target=\"_blank\" rel=\"noopener\">OC-15059<\/a>) and for subscript components in key paths (<a href=\"https:\/\/youtrack.jetbrains.com\/issue\/OC-16222\" target=\"_blank\" rel=\"noopener\">OC-16222<\/a>) is to be improved in future.<\/p>\n<p>Adjust access control for setters with the new <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/OC-17223\" target=\"_blank\" rel=\"noopener\">quick-fix<\/a>:<br \/>\n<img decoding=\"async\" alt=\"Access modifiers quick fix\" width=\"455\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2018\/08\/objc-quick_fix@2x.png\"\/><\/p>\n<h2 id=\"improvements\">Improvements<\/h2>\n<p>Easily select the content of a Swift code construct within curly braces using <strong>Extend\/Shrink Selection <\/strong>(<code>\u2325\u2191<\/code>\/<code>\u2325\u2193<\/code>):<br \/>\n<img decoding=\"async\" alt=\"Expand\/shrink selection\" width=\"455\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2018\/08\/objc-expand_shrink@2x.gif\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2018\/08\/objc-expand_shrink@2x.png\"\/><br \/>\nHave <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/OC-17459\" target=\"_blank\" rel=\"noopener\">setter access modifiers<\/a> shown in the completion list:<br \/>\n<img decoding=\"async\" alt=\"Setter access modifiers\" width=\"455\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2018\/08\/objc-modifiers@2x.png\"\/><\/p>\n<h2 id=\"bug_fixes\">Bug fixes<\/h2>\n<ul>\n<li>AppCode hangs if <strong>Add selection for next occurrence<\/strong> is about to select something in the suggested code (<a href=\"https:\/\/youtrack.jetbrains.com\/issue\/OC-13893\" target=\"_blank\" rel=\"noopener\">OC-13893<\/a>)<\/li>\n<li>Timeout while waiting for simulated application PID (<a href=\"https:\/\/youtrack.jetbrains.com\/issue\/OC-17492\" target=\"_blank\" rel=\"noopener\">OC-17492<\/a>)<\/li>\n<li>Protocol method which has an inaccessible same-named method in protocol extension is missing in completion (<a href=\"https:\/\/youtrack.jetbrains.com\/issue\/OC-17567\" target=\"_blank\" rel=\"noopener\">OC-17567<\/a>)<\/li>\n<li>Disconnected device which had <strong>Connect via network<\/strong> enabled on another workstation is listed in run destinations (<a href=\"https:\/\/youtrack.jetbrains.com\/issue\/OC-17417\" target=\"_blank\" rel=\"noopener\">OC-17417<\/a>)<\/li>\n<li>Improved handling of <code>try<\/code>\/<code>try?<\/code>\/<code>try!<\/code> in <strong>Extract Variable<\/strong> \/ <strong>Method<\/strong> refactorings<\/li>\n<\/ul>\n<p>Besides, this build addresses a heap of issues related to Swift formatting, extract refactorings, and resolve &#8211; see them in the <a href=\"https:\/\/confluence.jetbrains.com\/display\/OBJC\/AppCode+2018.2.2+EAP%2C+build+182.4323.4\" target=\"_blank\" rel=\"noopener\">release notes<\/a>.<\/p>\n<p><em>Your AppCode team<\/em><br \/>\n<em>JetBrains<\/em><br \/>\n<em>The Drive to Develop<\/em><\/p>\n","protected":false},"author":437,"featured_media":0,"comment_status":"open","ping_status":"open","template":"","categories":[89],"tags":[540,712,714,713,91,715,445],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/appcode\/3983"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/appcode"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/types\/appcode"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/users\/437"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/comments?post=3983"}],"version-history":[{"count":0,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/appcode\/3983\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=3983"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=3983"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=3983"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=3983"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}