2016-07-24 4 views
0

는 내가 이미 스위프트 그냥 프로그래밍 언어 및 기초는 목표 - C의 프레임 워크 빌드 것을 알고 스위프트 2 및 기초 프레임 워크스위프트와 재단의 관계

사이의 관계를 이해하고 싶습니다.

내가 이해할 수없는 것은 기초 수업을 사용해야하거나 순수 스위프트에 머무를 때입니다.

예 : 내가 Swift 문자열을 가지고있을 때 나는 항상 순수 Swift 문자열에서 찾을 수없는 기능을 위해 NSString을 상속해야합니까?

어제 두 Swift 문자열 사이의 대소 문자를 구분하지 않는 비교를 찾고있었습니다. 내가 찾은 해결책 중 하나는 다음과 같습니다.

var a : String = "Cash" 
var b : String = "cash" 

if(a.caseInsensitiveCompare(b) == NSComparisonResult.OrderedSame){ 
    println("voila") 
} 

이것은 나에게 많은 좌절을 가져옵니다. Swift 문자열은 순수 Swift에없는 함수 (caseInsensitiveCompare)를 어떻게 가질 수 있습니까?

문자열이 어딘가에서 그것을 상속 했습니까?

스위프트의 수퍼 세트로 기초가 필요한 경우 전반적인 설명을 제공해주십시오. Objective-C for Swift를 건너 뛰는 개발자로서 더 이상 필요하지 않은 기초 부분은 무엇입니까?

답변

1
:

if a.lowercaseString == b.lowercaseString { 
    //Strings match 
} 

실제로 String의 확장으로 롤 것입니다 : 귀하의 경우

, 당신은 소문자로 두 문자열을 변환하고이를 비교하여 대소 문자를 구분하지 않고 비교를 할 수

Swift 문자열에 순수 Swift에없는 함수(caseInsensitiveCompare)이있을 수 있습니까?

당신이 재단 수입 (또는 재단을 포함 UIKit) 및 스위프트 문자열이기 때문에 파운데이션있는 NSString에 브리지 때문입니다. 이로 인해 많은 (그러나 전부는 아님) NSString 메서드가 String에서 활기를 띄게됩니다.

당신이 있다면 하지 재단 수입, 당신은 당신이 한 일을 할 수 없었을 다음과 같습니다 caseInsensitiveCompare이 존재하지 않았을 것이다.

+0

그리고 자세한 내용을 다루는 저의 무료 온라인 서적을 참조하십시오. http://www.apeth.com/swiftBook/ch03.html#_string – matt

+0

좋습니다. '브리징 된'정의를 좀 더 설명 할 수 있습니까? –

+0

"브리징"은 귀하의 질문에 대한 답변을 말한 것입니다. 자세한 내용은 내가 준 링크를 읽으십시오. 내 책은 이것에 대해 모두 설명합니다. 또는 Swift 설명서를 읽으십시오. – matt

1

Foundation 프레임 워크는 목표 C 초창기부터 NeXTSTEP에 뿌리를두고 있습니다. 훌륭한 프레임 워크이지만 날짜가 있고 최신 프로그래밍 원칙이 많지 않으며 Swift의 새로운 기능 중 많은 부분을 활용하지 않습니다 반짝 이는 장난감. Apple은 Swift 3에 대한 Foundation 활성화를 위해 노력하고 있습니다.

순수 Swift 솔루션을 사용할 수있을 때 언제든지 Foundation을 사용하지 않을 것입니다.

extension String { 
    func equalsIgnoringCase() -> Bool { 
     return a.lowercaseString == b.lowercaseString 
    } 
} 

//then: 

if a.equalsIgnoringCase(b) { 
    //Strings match 
}