2015-11-03 30 views
1

我有一個PFObject的自定義子類,它可以跟蹤設備上的大型視頻文件。我想確保如果我刪除PFObject的videoFile也被刪除。在解析中添加行爲以刪除方法

現在,如果已覆蓋刪除方法的所有變體,但看起來不對。在刪除對象時是否有一種中心方式來添加行爲?

+0

您能否澄清一下問題。視頻文件存儲在Parse中,還是僅在本地?有'beforeDelete'和'afterDelete'雲代碼掛鉤,你可以把它放在一個類上來處理任何你可能需要的額外清理操作 – Russell

+0

這個文件存儲在本地 – otusweb

回答

1

有一個鉤子可以捕獲後端的每一次刪除(雲代碼中的beforeDelete),但從這個問題來看,這聽起來像是錯誤的地方,因爲需要刪除的文件是本地的。

最近解析open-sourced the SDKPerusing the code。看起來刪除變體最終都會調用deleteInBackground。因此,一個想法 - 有點太聰明,IMO - 將會只覆蓋那個。但我認爲依靠這種無證的事實是不明智的。

如果你控制調用者端,一個想法是制定一個策略,不要直接調用delete,並提供一個「otuswebDelete」方法來執行對象和文件刪除。

如果不控制主叫方(或不信任自己記住自己的政策),我想你最好,你當前的設計下,只覆蓋幾個變種:​​

– delete 
– delete: 
– deleteInBackground 
– deleteInBackgroundWithBlock: 
– deleteEventually 

可以全部調用super來刪除,然後調用子類中的方法刪除本地文件。不是那麼糟糕,海事組織。由於原因太多,無法在此處詳細說明,我習慣於「包裝」我的PFObjects(具有PFObject屬性的NSObject子類),而不是對它們進行子類化。 (a)使用SDK方法(就像在你的問題中),(b)序列化,((a)使用方法的更多控制) c)獲取管理相關對象,(d)更多...

+0

與OP無關,但作爲定期對PFObject進行子類化的人,我對你的包裝理念感興趣。你是否用這種方式表示了PFObject繼承的多個級別?由於PFObject通常只允許一級子類。 – Russell

+1

@Russell,是的,多層次的子類化是包裝的另一個好處。 – danh

+0

非常整潔的概念,我不得不嘗試。感謝分享! – Russell