2017-02-15 39 views
1

我一直在尋找一種方法,可以在Swift中將我的數組合併到一個數組中。我有2個NSMutableArrays,我想在新數組中添加數組的內容。addObjectsFromArray在Swift中不可用

示例:在目標C

NSMutableArray a = [1,2,3]; 
NSMutableArray b = [a,b,c]; 
NSMutableArray c = [NSMutableArray alloc]init]; 
[c addObjectsFromArray:a]; 
[c addObjectsFromArray:b]; 
// Output : c = [1,2,3,a,b,c] 

但是在斯威夫特,我面臨的一個問題。我嘗試過「+」,「append」()和addObjects(從:),但沒有給出必要的答案。 append(contentsOf :)似乎不起作用。 Xcode建議刪除「contentsOf:」。任何人都可以爲我提供一個小解決方案嗎?請不要建議循環。

+0

Xcode是給錯誤刪除它 –

+0

@MSwapnil在SWIFT你已經使用'NSMutableArray'或迅速本土陣列? –

+0

我已經使用了橋頭,所以數組是NSMutableArray,但我想快速合併 –

回答

2

你的Objective-C代碼直接轉化爲在以下swift 3

var a:NSMutableArray = [1,2,3]; 
var b:NSMutableArray = ["a","b","c"]; 
var c:NSMutableArray = NSMutableArray(); 
c.addObjects(from: a as [AnyObject]) 
c.addObjects(from: b as [AnyObject]) 
c.add([a, b]) // a, b are arrays 

結果:c = [1, 2, 3, "a", "b", "c", [[1, 2, 3], ["a", "b", "c"]]]

如果你想使用一個swift陣列:

var a:[Any] = [1,2,3]; 
var b:[Any] = ["a","b","c"]; 
var c:[Any] = [Any](); 
c.append(contentsOf: a) 
c.append(contentsOf: b) 
c.append(a) 
c.append(b) 

結果:c = [1, 2, 3, "a", "b", "c", [1, 2, 3], ["a", "b", "c"]]

從討論中,我相信下面的圖片中包含您所遇到的問題:

enter image description here

如果你正在嘗試的NSMutableArray內容添加到快捷陣列,鑄造NSMutableArray[AnyObject]將有所幫助。你可以通過以下方式來完成。

Example:

var b:NSMutableArray = ["a","b","c"]; 
var d:[AnyObject] = [] 
d.append(contentsOf: b as [AnyObject]) 

結果:d = ["a", "b", "c"]

+0

簡單:'c.addObjects(from:a as [AnyObject])' –

+0

@MartinR,你是對的 – KrishnaCA

+0

addObjects(from :)將數組添加爲元素...這意味着如果兩個數組都有4-4元素,那麼結果數組將只包含2個元素都是具有4-4個元素的數組 –

0
var arr = [1, 2, 3] 
var arr1 = [7, 8] 
arr.insert(contentsOf: arr1, at: 0) 
print(arr) 
+0

不工作!我有MutableArray和+ =不能應用於類型2的操作數MutableArrays –

+0

你可以再看一次嗎? – Ramis

+0

它會運行在正常的方法,但當我試圖從NSMutableArray初始化,然後它給出錯誤,以刪除contentsOf: –

0

使用append(contentsOf: C)方法 -

let arr1 = [1, 2, 3] 
var arr2 = [4] 
arr2.append(contentsOf: arr1) 
//[4, 1, 2, 3] 
相關問題