2016-06-09 1 views
1

xCode 7.3 놀이터 및 Swift 2.0 학습 중입니다."형식이 더 이상 컨텍스트없이 모호합니다"배열로

var arrayName:Array = [1, 2, 3, 4, "Mike"] 

을 그리고 난 다음 오류 받고 있어요 : 내가 오류가 사라 배열에서 문자열을 제거 할 때 분명히 스위프트 그러나 지금

type of expression is ambiguous without more context

을 다음과 같이

나는 배열이 배열에 여러 유형을 허용하므로 왜 그 오류를 이해하지 못합니까?

어떤 아이디어가 있습니까?

건배

+0

UIKit을 가져 오지 않았기 때문에 문제가 발생했습니다. –

답변

1

오류가 모두 표시됩니다. 당신은 예를 들어, 다음과 같은 문제를 해결할 수 있습니다

var arrayName: Array<AnyObject> = [1, 2, 3, 4, "Mike"] 

또는, 더 간단,

var arrayName = [1, 2, 3, 4, "Mike"] 

다음 arrayName 암시 유형 Array<NSObject>을 얻을 것이다.

모든 타입 인식. 두 가지 옵션이 있습니다 : 명시 적 전체 유형 선언을 사용하거나 빠른 컴파일러가 타입을

+0

고마워요. 첫 번째 예제는 : 'Int'유형의 값이 'AnyObject' –

+0

과 일치하지 않으며 두 번째 예에서 여전히 초기 오류 메시지가 표시됩니다. –

+1

@MikeMeade 놀이터를 사용한 적이 없습니다. 어쩌면 거기에 몇 가지 제한이 있습니까? 나는 Xcode 7.3을 가지고 있으며, 나를 믿는다. 두 줄은 정규 코드에서 절대적으로 유효하며 오류없이 컴파일된다. –

0

확인을 인식 해보자 수를이 밖으로

Ray Wenderlich on Swift Arrays

So, arrays can only contain one type of object? What if I want varied types? In Swift you are highly encouraged to make strongly typed arrays that contain only one type of object, with syntax like this:

var goodArray: [String] = ["foo", "bar"] 

That said, technically you can still create arrays that contain multiple types of objects. However, before you do this you should be asking yourself why you want to do this. In most cases it does not make the best sense and you can likely engineer your solution to be cleaner. With that said, here’s how you can create a Swift array with varying types of objects within it by using AnyObject:

var brokenArray: [AnyObject] = ["foo", 1, 12.23, true] 

TL : DR : 배열은 iOS에 강력하게 입력됩니다. 여러 유형의 요소를 삽입해야하는 경우 "AnyObject"유형으로 만듭니다. 비록 이것을 추천하지 않을 것입니다.

+0

감사합니다. 그러나 예는 여전히 오류입니다. 나는 아마 wouldnt 할 필요가 있거나 유형을 혼합하고 싶다, 그러나 나는 기술적으로 당신이 그들을 섞을 수 있어야하는 경우에 왜 오인하는지 이해하지 않는다. –

+0

받은 오류 메시지는 무엇입니까? 그리고 기술적으로 당신은 그들을 섞을 수 없습니다. 당신이 그것을주지 않으면 배열은 첫 번째 요소의 타입을 취합니다. 그러나 항상 강하게 타입 화됩니다. –

+0

아, UIKit을 가져 오지 않았기 때문에 배열을 알았습니다. 문제 해결, 오류 없음. 덕분에 –