{"id":559,"date":"2023-02-25T19:04:30","date_gmt":"2023-02-25T11:04:30","guid":{"rendered":"https:\/\/www.appblog.cn\/?p=559"},"modified":"2023-04-29T20:36:17","modified_gmt":"2023-04-29T12:36:17","slug":"swift-complex-data-type-description-array-dictionary-structure-enumeration","status":"publish","type":"post","link":"https:\/\/www.appblog.cn\/index.php\/2023\/02\/25\/swift-complex-data-type-description-array-dictionary-structure-enumeration\/","title":{"rendered":"Swift &#8211; \u590d\u6742\u6570\u636e\u7c7b\u578b\u8bf4\u660e\uff08\u6570\u7ec4\uff0c\u5b57\u5178\uff0c\u7ed3\u6784\u4f53\uff0c\u679a\u4e3e\uff09"},"content":{"rendered":"<blockquote>\n<p>\u6ce8\uff1a\u4ee3\u7801\u5df2\u5347\u7ea7\u81f3Swift4<\/p>\n<\/blockquote>\n<h2>\u6570\u7ec4Array<\/h2>\n<p><!-- more --><\/p>\n<pre><code class=\"language-swift\">var types = [&quot;none&quot;,&quot;warning&quot;,&quot;error&quot;]  \/\/\u7701\u7565\u7c7b\u578b\u7684\u6570\u7ec4\u58f0\u660e\n\nvar menbers = [String]() \/\/\u58f0\u660e\u4e00\u4e2a\u7a7a\u6570\u7ec4\n\nmenbers.append(&quot;six&quot;)  \/\/\u6dfb\u52a0\u5143\u7d20\nmenbers += [&quot;seven&quot;] \/\/\u6dfb\u52a0\u5143\u7d20\nmenbers.insert(&quot;one&quot;, at:0)  \/\/\u6307\u5b9a\u4f4d\u7f6e\u6dfb\u52a0\u5143\u7d20\n\nmenbers[0] = &quot;message&quot;  \/\/\u901a\u8fc7\u4e0b\u6807\u4fee\u6539\u6570\u7ec4\u4e2d\u7684\u6570\u636e\nmenbers[0...2] = [&quot;message&quot;,&quot;hangge&quot;,&quot;com&quot;]  \/\/\u901a\u8fc7\u5c0f\u6807\u533a\u95f4\u66ff\u6362\u6570\u636e\uff08\u524d3\u4e2a\u6570\u636e\uff09\n\nmenbers.count  \/\/\u83b7\u53d6\u6570\u7ec4\u5143\u7d20\u4e2a\u6570\nmenbers.isEmpty  \/\/\u5224\u65ad\u6570\u7ec4\u662f\u5426\u4e3a\u7a7a\n\n\/\/\u4ea4\u6362\u5143\u7d20\u4f4d\u7f6e\uff08\u7b2c2\u4e2a\u548c\u7b2c3\u4e2a\u5143\u7d20\u4f4d\u7f6e\u8fdb\u884c\u4ea4\u6362\uff09\nmenbers.swapAt(1, 2)\n\nmenbers.remove(at: 2)  \/\/\u5220\u9664\u4e0b\u6807\u4e3a2\u7684\u6570\u7ec4\nmenbers.removeLast()  \/\/\u5220\u9664\u6700\u540e\u4e00\u4e2a\u5143\u7d20\nmenbers.removeAll(keepingCapacity: true)  \/\/\u5220\u9664\u6570\u7ec4\u4e2d\u6240\u6709\u5143\u7d20\n\nlet addStringArr = types + menbers \/\/\u6570\u7ec4\u7ec4\u5408\n\n\/\/\u4f7f\u7528for in \u5b9e\u73b0\u6570\u7ec4\u904d\u5386\nfor value in menbers{\n    print(&quot;\\(value)&quot;);\n}\n\n\/\/\u901a\u8fc7enumerate\u51fd\u6570\u540c\u65f6\u904d\u5386\u6570\u7ec4\u7684\u6240\u6709\u7d22\u5f15\u4e0e\u6570\u636e\nfor (index,value) in menbers.enumerated(){\n    print(&quot;\u7d22\u5f15\uff1a\\(index) \u6570\u636e\uff1a\\(value)&quot;);\n}\n\n\/\/\u8fc7\u6ee4\u6570\u7ec4\u5143\u7d20\nlet newTypes = types.filter { $0.count &lt; 6 } \/\/[&quot;none&quot;, &quot;error&quot;]\n\n\/\/\u521b\u5efa\u5305\u542b100\u4e2a\u5143\u7d20\u7684\u6570\u7ec4 [&quot;\u6761\u76ee0&quot;, &quot;\u6761\u76ee1&quot; ... &quot;\u6761\u76ee99&quot;]\nlet items = Array(0..&lt;100).map{ &quot;\u6761\u76ee\\($0)&quot;}\n\n\/\/\u521b\u5efa\u5e76\u521d\u59cb\u5316\u5305\u542b1024\u4e2aDouble\u5143\u7d20\u7684\u6570\u7ec4\nvar xTRe: [Double] = [Double]()\nxTRe = [Double](count:Int(1024), repeatedValue:0.0)<\/code><\/pre>\n<h2>\u5b57\u5178Dictionary\uff08\u5373\u952e\u503c\u5bf9\uff09<\/h2>\n<h3>\u57fa\u672c\u7528\u6cd5<\/h3>\n<pre><code class=\"language-swift\">var empty = [String: Int]()  \/\/\u5efa\u7acb\u4e2a\u7a7a\u5b57\u5178\n\nvar myDic = [&quot;name&quot;:&quot;hangge&quot;,\n             &quot;url&quot;:&quot;hangge.com&quot;]  \/\/\u58f0\u660e\u4e00\u4e2a\u5b57\u5178\n\nmyDic[&quot;address&quot;] = &quot;china&quot; \/\/\u6dfb\u52a0\u6216\u4fee\u6539key\u503c\nmyDic.removeValue(forKey: &quot;name&quot;)  \/\/\u5220\u9664&quot;name&quot;\u8fd9\u4e2akey\u503c\nmyDic[&quot;name&quot;] = nil  \/\/\u540c\u6837\u53ef\u4ee5\u5220\u9664&quot;name&quot;\u8fd9\u4e2akey\u503c\nmyDic.keys  \/\/\u8bbf\u95ee\u5b57\u5178\u7684key\u96c6\u5408\nmyDic.values \/\/\u8bbf\u95ee\u5b57\u5178\u7684values\u96c6\u5408\n\n\/\/\u904d\u5386\u5b57\u5178\nfor (key,value) in myDic {\n    print(&quot;\\(key):\\(value)&quot;);\n}\n\n\/\/\u53ea\u904d\u5386\u5b57\u5178\u7684\u952e\uff08key\uff09\nfor key in myDic.keys {\n    print(&quot;\\(key)&quot;);\n}\n\n\/\/\u53ea\u904d\u5386\u5b57\u5178\u7684\u503c\uff08value\uff09\nfor value in myDic.values {\n    print(&quot;\\(value)&quot;);\n}\n\n\/\/\u8fc7\u6ee4\u5b57\u5178\u5143\u7d20\nlet dict2 = dict.filter { $0.value &lt; 7 } \/\/[&quot;Pear&quot;: 6]<\/code><\/pre>\n<h3>\u5176\u5b83\u51e0\u79cd\u521b\u5efa\u5b57\u5178\u7684\u65b9\u6cd5<\/h3>\n<p>\uff081\uff09\u901a\u8fc7\u5143\u7ec4\u521b\u5efa\u5b57\u5178<\/p>\n<pre><code class=\"language-swift\">let tupleArray = [(&quot;Monday&quot;, 30),  (&quot;Tuesday&quot;, 25),  (&quot;Wednesday&quot;, 27)]\nlet dictionary = Dictionary(uniqueKeysWithValues: tupleArray)\nprint(dictionary) \/\/[&quot;Monday&quot;: 30, &quot;Tuesday&quot;: 25, &quot;Wednesday&quot;: 27]<\/code><\/pre>\n<p>\uff082\uff09\u901a\u8fc7\u952e\u503c\u5e8f\u5217\u521b\u5efa\u5b57\u5178<\/p>\n<pre><code class=\"language-swift\">let names = [&quot;Apple&quot;, &quot;Pear&quot;]\nlet prices = [7, 6]\nlet dict = Dictionary(uniqueKeysWithValues: zip(names, prices)) \/\/[&quot;Pear&quot;: 6,  &quot;Apple&quot;: 7]<\/code><\/pre>\n<p>\uff083\uff09\u53ea\u6709\u952e\u5e8f\u5217\u3001\u6216\u8005\u503c\u5e8f\u5217\u521b\u5efa\u5b57\u5178<\/p>\n<pre><code class=\"language-swift\">let array = [&quot;Monday&quot;, &quot;Tuesday&quot;, &quot;Wednesday&quot;]\nlet dict1 = Dictionary(uniqueKeysWithValues: zip(1..., array))\nlet dict2 = Dictionary(uniqueKeysWithValues: zip(array, 1...))\nprint(&quot;dict1\uff1a\\(dict1)&quot;)\nprint(&quot;dict2\uff1a\\(dict2)&quot;)<\/code><\/pre>\n<p>\uff084\uff09\u5b57\u5178\u5206\u7ec4\uff08\u6bd4\u5982\u4e0b\u9762\u751f\u6210\u4e00\u4e2a\u4ee5\u9996\u5b57\u6bcd\u5206\u7ec4\u7684\u5b57\u5178\uff09<\/p>\n<pre><code class=\"language-swift\">let names = [&quot;Apple&quot;, &quot;Pear&quot;, &quot;Grape&quot;, &quot;Peach&quot;]\nlet dict = Dictionary(grouping: names) { $0.first! }\nprint(dict) \/\/[&quot;P&quot;: [&quot;Pear&quot;, &quot;Peach&quot;], &quot;G&quot;: [&quot;Grape&quot;], &quot;A&quot;: [&quot;Apple&quot;]]<\/code><\/pre>\n<h3>\u91cd\u590d\u952e\u7684\u5904\u7406<\/h3>\n<p>\uff081\uff09zip\u914d\u5408\u901f\u8bb0+\u53ef\u4ee5\u7528\u6765\u89e3\u51b3\u91cd\u590d\u952e\u7684\u95ee\u9898\uff08\u76f8\u540c\u7684\u952e\u503c\u76f8\u52a0\uff09<\/p>\n<pre><code class=\"language-swift\">let array = [&quot;Apple&quot;, &quot;Pear&quot;, &quot;Pear&quot;, &quot;Orange&quot;]\nlet dic = Dictionary(zip(array, repeatElement(1, count: array.count)), uniquingKeysWith: +)\nprint(dic) \/\/ [&quot;Pear&quot;: 2, &quot;Orange&quot;: 1, &quot;Apple&quot;: 1]<\/code><\/pre>\n<p>\uff082\uff09\u4e0b\u9762\u4f7f\u7528\u5143\u7ec4\u521b\u5efa\u5b57\u5178\u65f6\uff0c\u9047\u5230\u76f8\u540c\u7684\u952e\u5219\u53d6\u8f83\u5c0f\u7684\u90a3\u4e2a\u503c<\/p>\n<pre><code>let duplicatesArray = [(&quot;Monday&quot;, 30),  (&quot;Tuesday&quot;, 25),  (&quot;Wednesday&quot;, 27), (&quot;Monday&quot;, 28)]\nlet dic = Dictionary(duplicatesArray, uniquingKeysWith: min)\nprint(dic) \/\/ [&quot;Monday&quot;: 28, &quot;Tuesday&quot;: 25, &quot;Wednesday&quot;: 27]<\/code><\/pre>\n<h3>\u5b57\u5178\u5408\u5e76<\/h3>\n<p>\u60f3\u8981\u5c06\u4e00\u4e9b\u5e8f\u5217\u3001\u6216\u8005\u5b57\u5178\u5408\u5e76\u5230\u73b0\u6709\u7684\u5b57\u5178\u4e2d\uff0c\u53ef\u4ee5\u501f\u52a9\u5982\u4e0b\u4e24\u4e2a\u5408\u5e76\u65b9\u6cd5\uff1a<\/p>\n<p>merge(<em>: uniquingKeysWith:)\uff1a\u8fd9\u79cd\u65b9\u6cd5\u4f1a\u4fee\u6539\u539f\u59cbDictionary<br \/>\nmerging(<\/em>: uniquingKeysWith:)\uff1a\u8fd9\u79cd\u65b9\u6cd5\u4f1a\u521b\u5efa\u5e76\u8fd4\u56de\u4e00\u4e2a\u5168\u65b0\u7684Dictionary<\/p>\n<pre><code class=\"language-swift\">var dic = [&quot;one&quot;: 10, &quot;two&quot;: 20]\n\n\/\/merge\u65b9\u6cd5\u5408\u5e76\nlet tuples = [(&quot;one&quot;, 5),  (&quot;three&quot;, 30)]\ndic.merge(tuples, uniquingKeysWith: min)\nprint(&quot;dic\uff1a\\(dic)&quot;)\n\n\/\/merging\u65b9\u6cd5\u5408\u5e76\nlet dic2 = [&quot;one&quot;: 0, &quot;four&quot;: 40]\nlet dic3 = dic.merging(dic2, uniquingKeysWith: min)\nprint(&quot;dic3\uff1a\\(dic3)&quot;)<\/code><\/pre>\n<h3>\u9ed8\u8ba4\u503c<\/h3>\n<p>\uff081\uff09\u8fc7\u53bb\u6211\u4eec\u5982\u679c\u5e0c\u671b\u5f53\u67d0\u4e2a\u5b57\u5178\u503c\u4e0d\u5426\u5b58\u5728\u65f6\uff0c\u4f7f\u7528\u4e00\u4e2a\u6307\u5b9a\u7684\u9ed8\u8ba4\u503c\uff0c\u8fd9\u4e2a\u901a\u5e38\u4f1a\u4f7f\u7528if let\u6765\u5224\u65ad\u5b9e\u73b0\u3002<\/p>\n<pre><code class=\"language-swift\">let dic = [&quot;apple&quot;: 1, &quot;banana&quot;: 2 ]\nvar orange:Int\nif let value = dic[&quot;orange&quot;] {\n    orange = value\n}else{\n    orange = 0\n}\nprint(orange)<\/code><\/pre>\n<p>\uff082\uff09\u5230\u4e86 Swift4\uff0c\u6211\u4eec\u53ef\u4ee5\u76f4\u63a5\u6307\u5b9a\u4e00\u4e2a\u9ed8\u8ba4\u503c\uff0c\u5982\u679c\u4e0d\u5b58\u5728\u8be5\u952e\u503c\u65f6\u540d\uff0c\u4f1a\u76f4\u63a5\u8fd4\u56de\u8fd9\u4e2a\u503c\u3002\u4e0b\u9762\u4ee3\u7801\u7684\u6548\u679c\u540c\u4e0a\u9762\u662f\u4e00\u6837\u7684\u3002<\/p>\n<pre><code class=\"language-swift\">let dic = [&quot;apple&quot;: 1, &quot;banana&quot;: 2 ]\nlet orange = dic[&quot;orange&quot;, default:0]\nprint(orange)<\/code><\/pre>\n<p>\uff083\uff09\u4e0b\u9762\u662f\u7edf\u8ba1\u4e00\u4e2a\u5b57\u7b26\u4e32\u4e2d\u6240\u6709\u5355\u8bcd\u51fa\u73b0\u7684\u6b21\u6570\u3002\u53ef\u4ee5\u770b\u5230\u4e86\u6709\u4e86\u9ed8\u8ba4\u503c\uff0c\u5b9e\u73b0\u8d77\u6765\u4f1a\u7b80\u5355\u8bb8\u591a\u3002<\/p>\n<pre><code class=\"language-swift\">let str = &quot;apple banana orange apple banana&quot;\nvar wordsCount: [String: Int] = [:]\nfor word in str.split(separator: &quot; &quot;) {\n    wordsCount[&quot;\\(word)&quot;, default: 0] += 1\n}\nprint(wordsCount)<\/code><\/pre>\n<h2>\u7ed3\u6784\u4f53struct<\/h2>\n<pre><code class=\"language-swift\">\/\/\u521b\u5efa\u4e00\u4e2a\u7ed3\u6784\u4f53\nstruct BookInfo{\n    var ID:Int = 0\n    var Name:String = &quot;Defaut&quot;\n    var Author:String = &quot;Defaut&quot;\n}\n\nvar book1:BookInfo \/\/\u9ed8\u8ba4\u6784\u9020\u5668\u521b\u5efa\u7ed3\u6784\u4f53\u5b9e\u4f8b\nvar book2 = BookInfo(ID:0021,Name:&quot;\u822a\u6b4c&quot;,Author:&quot;hangge&quot;)  \/\/\u8c03\u7528\u9010\u4e00\u6784\u9020\u5668\u521b\u5efa\u5b9e\u4f8b\nbook2.ID = 1234  \/\/\u4fee\u6539\u5185\u90e8\u503c<\/code><\/pre>\n<h2>\u679a\u4e3eenum<\/h2>\n<pre><code class=\"language-swift\">enum CompassPoint {\n    case north\n    case south\n    case east\n    case west\n}\nvar directionToHead = CompassPoint.west\n\nenum Planet: Int {\n    case mercury = 1\n    case venus = 2\n    case earth = 3\n}\nlet earthsOrder = Planet.earth.rawValue \/\/rawValue\u6765\u83b7\u53d6\u4ed6\u7684\u539f\u59cb\u503c:3\nlet possiblePlanet = Planet(rawValue: 2)  \/\/\u901a\u8fc7\u539f\u59cb\u503c\u6765\u5bfb\u627e\u6240\u5bf9\u5e94\u7684\u679a\u4e3e\u6210\u5458:Venus\n\nenum Direction {\n    case up\n    case down\n\n    func description() -&gt; String{\n        switch(self){\n        case .up:\n            return &quot;\u5411\u4e0a&quot;\n        case .down:\n            return &quot;\u5411\u4e0b&quot;\n        }\n    }\n}\nprint(Direction.up.description())<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u6ce8\uff1a\u4ee3\u7801\u5df2\u5347\u7ea7\u81f3Swift4 \u6570\u7ec4Array var types = [&quot;none&quot;,&#038;q [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[171],"tags":[],"class_list":["post-559","post","type-post","status-publish","format-standard","hentry","category-swift"],"_links":{"self":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/559","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/comments?post=559"}],"version-history":[{"count":0,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/559\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/media?parent=559"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/categories?post=559"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/tags?post=559"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}