簡體   English   中英

在tableView:cellForRowAtIndexPath中使用子類化PFObject

[英]Using a subclassed PFObject in tableView:cellForRowAtIndexPath

我將PFObject子類PFObject

import UIKit
import Parse

class Post: PFObject, PFSubclassing {

    class func parseClassName() -> String {
        return "Post"
    }

}

在AppDelegate應用程序中注冊它:didFinishLaunchingWithOptions:

Post.registerSubclass()

我正在嘗試在tableView中使用該類:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell? {
    var cell = tableView.dequeueReusableCellWithIdentifier(postCellReuseIdentifier) as? PostCell
    if cell == nil {
        cell = PostCell(style: UITableViewCellStyle.Default, reuseIdentifier: postCellReuseIdentifier)
    }
    if let postCell = cell {
        // assign post to the cell
        postCell.post = object as! Post?
        // setup delegate
        postCell.delegate = self
        return postCell
    }

    return nil
}

我需要將對象轉換為Post,但無法弄清楚如何。 我目前收到此錯誤:

無法將類型'PFObject'(0x10c856ef8)的值強制轉換為'MyApp.Post'(0x10c855670)。

首先,您需要通過注冊實例來確保自己正確地將PFObject子類化。 同樣,您正在嘗試的沮喪是不可能的。 您不能將基類的實例轉換為派生類的實例,除非它只是作為基類存儲的派生實例。

我工作了。 子類必須具備以下條件:

將此添加到您的橋接頭中:

#import <Parse/PFObject+Subclass.h>

建立課程:

class MyClass: PFObject, PFSubclassing {

    static func parseClassName() -> String {
        return "MyParseClass"
    }

}

重要說明:確保在parseClassName()返回的類名稱與您在Parse.com上創建的類的名稱完全匹配。

在AppDelegate:application:didFinishLaunchingWithOptions中注冊子類:

MyClass.registerSubclass()

您現在應該可以將PFObject強制轉換為您的類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM