2016-07-10 81 views
0

我在我的iOS應用程序中使用異步,並需要一個流動滾動的CollectionView,所以我試圖使用ASyncDisplayKit,似乎是有順利滾動。異步調用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 ...

這兩種方法,需要返回或者一個ASCellNode或 ASCellNodeBlock。 ASCellNodeBlock是一個創建可以在後臺線程上運行的ASCellNode的塊。請注意, ASCellNodes由ASTableNode,ASCollectionNode和ASPagerNode使用。