2016-01-24 73 views
0

例如:如何將數字添加到數組?斯威夫特

var myArray = ["first string","second string"] 

myArray.append(35) // Here will be an error 
+0

我認爲蘋果有對此一些不錯的文檔。 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html – Eendje

+1

你的數組的類型爲'[String]',類型爲'String'。因此,swift期望數組的新成員也是'String'類型,而上面的'35'是一個整數字面值。試試'myArray.append(「35」)'或'myArray.append(String(35)??「」))。 – dfri

+0

我只是學習迅速,我想知道 - 如果它有類型的STRING,是否可以添加數字到數組? – scorpio

回答

1

如果你寫

var myArray = ["first string","second string"] 
print(myArray.dynamicType) 

你會看到myArrayArray<String>類型或[String]的。你不能附加Int

你需要做的是指定myArray自己的類型:

var myArray : [AnyObject] = ["first string","second string"] 

print(myArray.dynamicType) // now prints Array<AnyObject> which you can add Int to 

myArray.append(35) 
+0

謝謝!這正是I1m所尋找的) – scorpio

+0

如果你想只允許*數組中的Int和String看看vacawama的答案! – luk2302

+0

luk2302請注意,這隻適用於免費橋接的幫助,因此導入基礎是必要的。字符串橋接到_NSContiguousString 和Int到__NSCFNumber。 – user3441734

2

如果myArray選項單擊,你會看到它是[String]類型(String陣列)的。您只能將String s添加到myArray

如果您希望能夠將Int添加到您的數組中,您將需要更具包容性的類型。如果你製作陣列[Any],你可以放入任何東西。

var myArray:[Any] = ["first string","second string"] 
myArray.append(35) // This now works 

如果你想只存儲IntString,你可以創建自己的自定義協議:

protocol StringsAndInts { 
} 

extension String: StringsAndInts { 
} 

extension Int: StringsAndInts { 
} 

var myArray:[StringsAndInts] = ["first string","second string"] 

myArray.append(35) 

print(myArray) // ["first string", "second string", 35] 

myArray.append(3.14) // error: argument type 'Double' does not conform to expected type 'StringsAndInts'