我刚刚将Swift 1.2代码迁移到Swift 2.0.
此代码以前工作正常.但现在有一个错误说
Redundance Conformance of User to Protocol PFSubclassing (Swift 2.0)
Run Code Online (Sandbox Code Playgroud)
可能是什么导致了这个?
使用swift 1.2,我无法再使用parse子类检索一个poiter数组,并使用另一个parse子类向下转换它.
我总是发现错误:
fatal error: NSArray element failed to match the Swift Array Element type
Run Code Online (Sandbox Code Playgroud)
你有想法还是可能来?
代码:
import Foundation
class ShotModel : PFObject, PFSubclassing {
/**
* MARK: Properties
*/
@NSManaged var name: String
@NSManaged var pics: [PicModel]
override class func initialize() {
var onceToken : dispatch_once_t = 0;
dispatch_once(&onceToken) {
self.registerSubclass()
}
}
class func parseClassName() -> String! {
return "Shot"
}
}
import Foundation
class PicModel : PFObject, PFSubclassing {
/**
* MARK: Properties
*/
@NSManaged var name: …Run Code Online (Sandbox Code Playgroud) 首先,我知道之前已经提出了类似的问题,并且我尝试遵循此 stackoverflow答案的建议,但无济于事.我也尝试添加这个的基本要点作为评论,但我还没有足够的代表:(基本上我试图使用PFSubclassing来扩展Parse的PFUser模型.因此,这是我的相应代码:
User.swift:
import Foundation
import CoreLocation
class User : PFUser, PFSubclassing {
override init() {
super.init()
}
convenience init(email: String!) {
self.init()
self.email = email
self.username = email
}
// don't need to call User.registerSubclass() in AppDelegate because this
// is handling that here
override class func load() {
self.registerSubclass()
}
// Commented out because this is extending PFUser
// override class func parseClassName() -> String! {
// return "PFUser"
// }
}
Run Code Online (Sandbox Code Playgroud)
测试结果:
-[PFObject _loadSensitiveUserDataFromKeychainItemWithName:]: unrecognized selector …Run Code Online (Sandbox Code Playgroud) 我复制了Subclassing的Parse Swift示例:
class Armor : PFObject, PFSubclassing {
override class func load() {
self.registerSubclass()
}
class func parseClassName() -> String! {
return "Armor"
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
/Parse/Armor.swift:11:1: error: type 'Armor' does not conform to protocol 'PFSubclassing'
class Armor : PFObject, PFSubclassing {
^
__ObjC.PFSubclassing:15:28: note: protocol requires function 'object()' with type '() -> Self!'
@objc(object) class func object() -> Self!
^
__ObjC.PFSubclassing:23:52: note: protocol requires function 'objectWithoutDataWithObjectId' with type '(String!) -> Self!'
@objc(objectWithoutDataWithObjectId:) class func objectWithoutDataWithObjectId(objectId: String!) -> Self!
^ …Run Code Online (Sandbox Code Playgroud)