

Xcode7 beta5のSwiftを用いてTwitterクライアントを作成しています。  
タイムラインの表示のためにUITableViewCellを用いていますがうまくいきません。  
以下がコードです。

[code]

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    
        var cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as? UITableViewCell
        if cell == nil {
            print("nil")
        }
        タイムラインの表示処理
        return cell!
    }        
    
[/code]

状態としてはdequeueReusableCellWithIdentifierの部分でブレークポイントを挟むとこの行で停止するのでこの部分までは到達しているようです。またUITableViewCellはStoryBoardで配置しておりidentifierも"Cell"にしております。  
dequeueReusableCellWithIdentifierの次の行にブレークポイントをはさんでも次の行に  
到達せず、またdequeueReusableCellWithIdentifierのところでstep inをしてもそのまま  
何もおこらずにブレークポイントから抜け出します。  
まだiOSアプリの開発を勉強中なので単純なミスがあるかもしれませんが、よろしくお願いします。


CC BY-SA 3.0
2015-08-19T07:53:18.563
14619
2015-08-19T10:58:48.140
2015-08-19T08:24:35.170
7362
10984
question
swift
iOSのUITableViewCellの再利用がうまくいかない(swift)


以下、回答に値する内容ではないかもしれません。あらかじめお断りしておきます。というのは、

> タイムラインの表示のためにUITableViewCellを用いていますがうまくいきません。

どういう現象が起きているために、「うなくい」かないと判断なさっているのか、不明だからです。

ご提示のコードは、このように書きかえたほうがいいと思います。

[code]

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    
        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell
        // タイムラインの表示処理
        return cell
    }
    
[/code]

[UITableView Class
Reference](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableView_Class/#//apple_ref/occ/instm/UITableView/dequeueReusableCellWithIdentifier:forIndexPath:)

これによると、`dequeueReusableCellWithIdentifier(_:forIndexPath:)`の返り値は、

> Return Value  
>  A UITableViewCell object with the associated reuse identifier. This method
> always returns a valid cell.

Optional型ではないので、`nil`になりません。そして、型が`AnyObject`になっていますが、じっさいは`UITableViewCell`であることが確実なので、いちいち返り値が`nil`であるとか、`UITableViewCell`でないとかの可能性を考慮する必要がありません。

以上の修正を施したのち、どのような意図しない現象が起きるのか、説明いただけるとさいわいです。


CC BY-SA 3.0
2015-08-19T10:58:48.140
14624
2015-08-19T10:58:48.140
7362
14619
answer