簡體   English   中英

多種類型的Swift數組

[英]Swift Arrays of Multiple Types

我正在一次將iOS Obj-C項目轉換為Swift類。 一個Obj-C類涉及一個NSArray的創建,該數組具有偶數個描述性NSStrings和奇數個NSNumbers。 回想起來,這並不是一個偉大的設計,但是它完全有效,並且可以完成工作。 我已經將其轉換為Swift:

let coins = ["1p", 0.01 , "2p" , 0.02 , "5p" , 0.05 , "10p" , 0.10 , "20p" , 0.20 , "50p" , 0.50 , "99p" , 0.99 ,  "£1" , 1.00 ,  "£2" , 2.00 , "£5" , 5.00 , "£9.99" , 9.99 , "£10" , 10.00 , "£20" , 20.00]

我確實意識到Swift在一個一維數組中強制執行一個單一類型,因此我們不會在講多個類型的數組作為靈活類型的數組-我希望它會推斷AnyObject。

但是,我從來沒有發現過,因為這似乎是Xcode的殺手.。 在我的整個項目中,它導致索引掛起,迅速變得無響應,並最終消耗所有系統內存。 即使將這行代碼粘貼到添加到空白單視圖應用程序的UIView子類的init中,也會導致Xcode嘗試以類似的方式進行構建而掛起(我想知道其他人是否有相同的經驗)。

鑒於它是可編譯的代碼,我在這里嘗試的內容是否合法? 如果是這樣,我是偶然發現了一個Swift錯誤,還是未能做一些重要的事情來使它正常工作。 我顯然可以找到一種更好的方法來完成我想要的事情,尤其是在Swift中,但是我認為在Obj-C中很少見到多種類型的數組,因此不值得進一步了解。

似乎您遇到了Array<AnyObject>和文字使用Xcode / Swift的錯誤。 我得到相同的結果。 我添加的元素似乎呈指數級惡化(大約6個元素后我的RAM已滿)。 作為一種解決方法,似乎可以創建一個可變數組(使用var而不是let )並逐個添加元素。 毫無疑問,Janky不會使Xcode崩潰。

var coins: Array<AnyObject> = []
coins += "1p"
coins += 0.01
coins += "2p"
coins += 0.02
coins += "5p"
coins += 0.05
coins += "10p"
coins += 0.10
coins += "20p"
coins += 0.20
coins += "50p"
coins += 0.50
coins += "99p"
coins += 0.99
coins += "£1"
coins += 1.00
coins += "£2"
coins += 2.00
coins += "£5"
coins += 5.00
coins += "£9.99"
coins += 9.99
coins += "£10"
coins += 10.00
coins += "£20"
coins += 20.00

因為例如Int是一個結構實例而不是一個類實例,所以類型是Any []

var x : Any[] = [1,"2",3.0]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM