2016-07-10 22 views
0

私は自分のIOSアプリケーションでAsyncを使用しており、スムーズなスクロールを行うように思われるASyncDisplayKitを使用しようとしているので、CollectionViewの流体スクロールが必要です。nodeBlockForRowAtIndexPathの非同期呼び出し

すべてのサンプルがObjectiveCで作られて、私はこのコードの一部を翻訳したいと思います:

- (ASCellNodeBlock)tableView:(ASTableView *)tableView nodeBlockForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    PhotoModel *photoModel = [_photoFeed objectAtIndex:indexPath.row]; 
    // this will be executed on a background thread - important to make sure it's thread safe 
    ASCellNode *(^ASCellNodeBlock)() = ^ASCellNode *() { 
     PhotoCellNode *cellNode = [[PhotoCellNode alloc] initWithPhotoObject:photoModel]; 
     return cellNode; 
    }; 

    return ASCellNodeBlock; 
} 

誰でもスウィフトにこのコードを変換するときに私を助けることができますか?

+0

どのような種類のオブジェクトは '_photoFeed'です。 NSArray? –

+0

はい、これは、休憩サービスから取得したデータを含む配列です – Cris

答えて

1

APIに関する詳細な情報がなくても、関数はASCellNodeを返すパラメータを持たないブロックを返すように見えます。

func tableView(tableView: UITableView, nodeBlockForRowAtIndexPath indexPath: NSIndexPath) -> ASCellNodeBlock { 

    let photoModel = photoFeed[indexPath.row] 

    let cellNodeBlock:() -> AScellNode = { 
     let cellNode = PhotoCellNode(photoObject: photoModel) 
     return cellNode 
    } 

    return cellNodeBlock 
} 

そしてeasily searchable docs ...

からこれらの2つの方法、ASCellNodeまたは ASCellNodeBlockのいずれかを返す必要があります。 ASCellNodeBlockは、背景スレッドで実行できる ASCellNodeを作成するブロックです。 ASCellNodesは、ASTableNode、ASCollectionNodeおよびASPagerNodeによって使用されることに注意してください。

関連する問題