[英]Could not init a PFObject subclass
升級到Xcode 6.3 6D570(和Swift 1.2)后,無法編譯子類對象的初始化。 假設我有一個名為Armor的類,該類繼承自PFObject,PFSubclassing(正好是Parse文檔所說的那樣)。
當我嘗試創建實例時,例如var armor = Armor()
,出現以下編譯錯誤:
呼叫中缺少參數'className'的參數
然后,我在Parse文檔中讀到,我應該使用“對象”類方法來初始化子類對象。 所以我試圖這樣初始化: var armor = Armor.object()
。
但是然后我得到以下編譯錯誤:
'object()'不可用:使用對象構造'PFObject()'
我正在使用Parse SDK版本1.7.1。
我還重寫了parseClassName
方法,如下所示:
class func parseClassName() -> String {
return "Armor"
}
在設置Parse之前,我將子類注冊在Initialize方法內部和應用程序委托中:
override class func initialize() {
var onceToken : dispatch_once_t = 0;
dispatch_once(&onceToken) {
self.registerSubclass()
}
}
我應該如何正確地初始化一個子類對象?
================================================== =======================
此問題已在1.7.3 PARSE SDK中修復,您可以在此處下載新版本: https : //parse.com/docs/downloads
================================================== =======================
盡管文檔尚不清楚, .object()
不再需要在Swift中使用.object()
了。 如說在這里和在發現了斯威夫特的代碼片段在這里
現在,這很奇怪,但是要使Armor()
正常工作,您需要以某種方式在同一文件中引用PFUser
類。 也許不必是PFUser
但我沒有更深入地研究它。
所以這行不通
import UIKit
import Parse
import Bolts
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
Parse.setApplicationId("appID", clientKey: "clientKey")
let myArmor = Armor()
return true
}
}
但這會
import UIKit
import Parse
import Bolts
private let fix = PFUser.hash() // here's the weird trick
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
Parse.setApplicationId("appID", clientKey: "clientKey")
let myArmor = Armor()
return true
}
}
希望這會Parse
幫助,並且Parse
盡快推出修復程序。
將類注冊為AppDelegate
的子類,但要在Parse.initialize
之前。 然后可以delete
overwritten function initialize
這將使:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]!) -> Bool {
Armor.registerSubclass()
// Further initialization
return true
}
然后只需通過調用構造函數來初始化類:
var myArmor = Armor()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.