2014-09-19 3 views
4

AmumerateSubstringsInRange 메서드로 몇 가지 문제에 직면 한 Swift에 대한 기존의 목표 C 코드 (ios)를 다시 작성합니다. 다음 코드를 Swift로 변환하는 데 도움이 될 수 있습니까?Swift의 enumerateSubstringsInRange

[contentString enumerateSubstringsInRange:NSMakeRange(0,[contentString length]) 
           options:NSStringEnumerationByComposedCharacterSequences 
           usingBlock: ^(NSString *substring, 
           NSRange substringRange, 
           NSRange enclosingRange,BOOL *stop) { 

      if(substring.length >= 2) { 
       /* my code goes here */ 
      } 
    } 
] 
+0

해당 코드의 목적을 설명 할 수 있습니까? 스위프트 문자열은 유니 코드 문자를 NSString보다 훨씬 잘 처리하므로 더 나은 해결책이 될 수 있습니다. –

답변

2

이 시도 :

contentString.enumerateSubstringsInRange(NSMakeRange(0, (contentString as NSString).length), options: NSStringEnumerationOptions.ByComposedCharacterSequences) { (substring, substringRange, enclosingRange, stop) ->() in 
    if((substring as NSString).length >= 2) { 
     NSLog("%@", substring) 
    } 
} 

그 위에서 볼 수 있듯이, 당신이 NSString에 캐스팅 가지고 String의 길이 속성에 액세스하기 위해서이다.

0

것은 스위프트 버전 3.0.2를 들어, 다음 코드를

  string.enumerateSubstrings(in: NSMakeRange(0, (string as NSString).length), options: NSString.EnumerationOptions.byComposedCharacterSequences) { (substring, substringRange, enclosingRange, stop) ->() in 

     let objCString:NSString = NSString(string:substring!) 
     let hs: unichar = objCString.character(at: 0) 
    } 
-1

하자의 contentString 사용 :있는 NSString가 = "문자열";

contentString.enumerateSubstrings (에 : NSRange.init (위치 : 0, 길이 : contentString.length), 옵션 : NSString.EnumerationOptions.byComposedCharacterSequences) {(문자열, substringRange, enclosingRange, 정지) // 코드에 }

+0

이 답변은 정확하고 유용 할 수 있지만 설명과 함께 [http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers] 설명과 함께 제공하는 것이 바람직합니다. 어떻게 문제를 해결하는 데 도움이되는지. –

0

시도해 볼 수 있습니다.

 contentString.enumerateSubstrings(in: NSRange(location: 0, length: contentString.length), options: NSStringEnumerationByComposedCharacterSequences, usingBlock: {(_ substring: String, _ substringRange: NSRange, _ enclosingRange: NSRange, _ stop: Bool) -> Void in 
     if substring.length >= 2 { 
      /* my code goes here */ 
     } 
    }) 

더 많은 정보를 얻으려면 여기를 방문하여 코드 수를 온라인으로 변환하십시오. https://iswift.org/try. 희망이 도움이됩니다.

+0

위는 언급되지 않았습니다. Swift 3, 그렇 겠지요. Swift 3에 편집 됨. – Ren

+0

내 악의적인데, 응답 한 후에 태그가 추가되었습니다. – Sulthan