completeHandler에서 제공하는 변수를 반환하려면이 메서드를 수정해야한다고 생각합니다. 어떤 몸이라도 올바른 방법으로 어떻게 알 수 있습니까?completionHandler에서 __block 변수를 전달하면 도움이 안됨
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"%@", [self getLanguageOfText:content]);
});
- (NSString *)getLanguageOfText:(NSString *)fewSentences {
__block NSString *returnLanguageString = @"Navi";
NSSpellChecker *spellChecker = [NSSpellChecker sharedSpellChecker];
[spellChecker setAutomaticallyIdentifiesLanguages:YES];
NSString *spellCheckText = fewSentences;
[spellChecker requestCheckingOfString:spellCheckText
range:(NSRange) {0, [spellCheckText length] }
types:NSTextCheckingTypeOrthography
options:nil
inSpellDocumentWithTag:0
completionHandler: ^(NSInteger sequenceNumber, NSArray *results, NSOrthography *orthography, NSInteger wordCount) {
//NSLog(@"dominant language = %@", orthography.dominantLanguage);
//language = @"Hi";
NSLog(@"dominant language = %@", orthography.dominantLanguage);
returnLanguageString = orthography.dominantLanguage;
}];
return returnLanguageString;
}
하지만 returnLanguageString은 항상 "Navi"이지만 orthography.dominantLanguage가 반환되기를 원합니다. 나는이 방법과 NSSpellChecker 코드
내가 이렇게 될 것입니다 위에서 언급 한 몇 문장을 가질 필요가있는 NSString에 저장됩니다 :
있습니다
40
00:02:59.000 --> 00:03:01.000
彼らは私達にメッセージを送った
41
00:03:01.000 --> 00:03:03.000
彼らは彼らが望むものは何でも取ることができる
42
00:03:04.000 --> 00:03:05.000
我々は彼らにメッセージを送信します。
43
00:03:07.000 --> 00:03:09.000
これは私たちの土地である
NSLog (@ "dominant language = % @", orthography.dominantLanguage)를 인쇄하려고하십니까? 맞춤법 검사기에서 인쇄 하시겠습니까? 맞춤법 검사 완료 핸들러에 NSString의 리턴 유형이 있습니까? – jailani
예 반환 유형은 __NSCFConstantString입니다. – user226372
이 모든 문제는 잘못된 것입니다. 결과가 비동기 적으로 획득 될 때 값을 리턴하지 마십시오. 콜백 블록을 사용해야합니다. 이 대답을보십시오. http://stackoverflow.com/questions/24253207/wrapping-blocks-based-api-in-convenience-methods/24253250#24253250 – CrimsonChris