객관적인 C 클래스 함수가 완료되면 Swift에서 배열을 만들려고합니다. 목표 C 함수에서 DoWithBlock을 사용하고 있지만 IOS에 익숙하지 않으며 실제로 올바른 순서로 실행 중인지 알아 내려고 노력 중입니다.Objective C to Swift - DoWithBlock
나는 여기서 해결책을 찾아 내려고 도움을 받았지만 그 대답을 연장하기 위해 무엇을했는지는 정확하고 새로운 질문이어야한다고 확신하지는 않습니다.
- (void)scanTableDoWithBlock:(void(^)(NSArray *scanResult, NSError *error))handler {
AWSDynamoDBObjectMapper *dynamoDBObjectMapper = [AWSDynamoDBObjectMapper defaultDynamoDBObjectMapper];
AWSDynamoDBScanExpression *scanExpression = [AWSDynamoDBScanExpression new];
scanExpression.limit = @10;
[[dynamoDBObjectMapper scan:[Mapper class]
expression:scanExpression]
continueWithBlock:^id(AWSTask *task) {
if (task.error) {
NSLog(@"The request failed. Error: [%@]", task.error);
if (handler != nil) {
handler(nil, task.error);
}
}
if (task.exception) {
NSLog(@"The request failed. Exception: [%@]", task.exception);
}
if (task.result) {
AWSDynamoDBPaginatedOutput *paginatedOutput = task.result;
NSMutableArray *scanResult = [[NSMutableArray alloc] initWithArray:paginatedOutput.items]; //// ADDED /////
if (handler != nil) {
handler([scanResult copy], nil);
}
}
return nil;
}];
}
@end
이어서 신속 클래스 I가 목표 C 함수를 호출하고 있는데 이런 배열을 만드는 바라고 :
대물 C 클래스이 같은 블록으로 함수를 호출하고
override func viewDidLoad() {
super.viewDidLoad()
let scanTable = ScanTable();
scanTable.scanTableDoWithBlock { (scanResult, error) in
let swiftArray = scanTable.scanResult
}
코드 목적 C 함수가 완료된 경우에만 실행 "swiftArray = scanTable.scanResult하자"또는 다른 이전에 실행 한 경우 그냥 순수 행운이 될 것입니다합니까. 신속하게 블록을 사용하는 것에 대한 좋은 문서를 찾을 수 없었습니다. 당신의 도움에 대한
감사
/// 배열이 생성되고 스캔 기능 내에서 신속 viewwilappear의 목적 C 스캔 기능을 (호출에 내 최신 시도를 편집하고 내가 할 수있는 루프 잘.에에 그것을 통해 내가 두 배열을 얻고 신속한 쪽은 빈 채로 코드가 실행으로 돌아가 ////
class RateSongsViewController: UIViewController {
override func viewWillAppear(animated: Bool)
{
super.viewWillAppear(animated)
let scanTable = ScanTable();
scanTable.scanTableDoWithBlock { (scanResult, error) in
let swiftArray = scanTable.scanResult
if (scanTable.scanResult == nil){
print(" scanResult ARRAY IS NILL")
} else {
print(" scanResult ARRAY IS NOT NILL")
}
if (swiftArray == nil){
print(" SWIFT ARRAY IS NILL")
} else {
print(" SWIFT ARRAY IS NOT NILL")
}
}
}
여기에 빠른 블록을 이해하기위한 좋은 문서 http://fuckingswiftblocksyntax.com/ (웹 사이트 이름은 어색해 보인다 :)) – raki
고맙습니다. @raki 나는 그것을 조사 할 것입니다. –