2014-09-17 8 views
6

self.assetsNSArrayNSMutableArray으로 변환하고 picker.selectedAssets 인이 메시지를 NSMutableArray에 추가하려고합니다. 이 코드는 어떻게 신속하게 보이게 할 것입니까? 신속한 3NSArray를 NSMutableArray로 변환 Swift

오브젝티브 C 코드

picker.selectedAssets = [NSMutableArray arrayWithArray:self.assets]; 
+0

문서를 보면서 신경 쓰지 않고 'NSMutableArray (self.assets)'및/또는'NSMutableArray.arrayWithArray (self.assets)'가 그것을 할 것이라고 상상해보십시오. – Kevin

답변

24

, NSMutableArrayNSArray로부터 상속 이니셜 라이저 init(array:)있다.

convenience init(array anArray: NSArray) 

Initializes a newly allocated array by placing in it the objects contained in a given array.


따라서, 다음과 같은 놀이터 코드가 잘 작동 :

import Foundation 

let nsArray = [12, 14, 16] as NSArray 
var nsMutableArray = NSMutableArray(array: nsArray) 
print(nsMutableArray) 

/* 
prints: 
(
    12, 
    14, 
    16 
) 
*/ 
+1

imagePicker.selectedAssets = NSMutableArray (array : self.assets!) 치명적 오류 : 예기치 않게 선택 값을 래핑하지 않는 동안 nil –

+0

주석을 읽으면'self.assets'는 실제로 NSArray 유형입니까? . 그렇다면 NSMutableArray에 할당하기 전에 선택적 바인딩을 수행해야합니다. –

+0

선택적 바인딩을 설명 할 수 있습니까? –

3

당신은, 신속한에서 같은 일을 단지 구문을 약간 수정할 수 있습니다 init(array:)는 다음과 같은 선언이 있습니다 :

var arr = NSArray() 
var mutableArr = NSMutableArray(array: arr) 
+0

'let arr'이되어야합니까? – mc01

+0

도 알려줄 수 있습니다. 두 배열은 스 니펫에서만 초기화되므로 모두 let을 사용할 수 있습니다. 그것들을 어떻게 사용하는지에 달려 있습니다. – connor

관련 문제