PFObject 子类化:NSArray 元素无法匹配 Swift 数组元素类型
PFObject Subclassing: NSArray element failed to match the Swift Array Element type
我正在尝试为 PFObject (Subclassing) 创建自定义 class,这似乎工作正常,但是当我尝试 convert/use 自定义 class object,作为一个普通的 PFObject,它搞砸了。这是我正在尝试做的事情。
首先,出于测试原因,我创建了名为 NewPFObject
的自定义 Class。
注意:我在 AppDelegate 中调用 NewPFObject.registerSubclass()
,然后再设置应用程序 ID。
class NewPFObject: PFObject, PFSubclassing {
static func parseClassName() -> String {
return "NewPFObject"
}
override init(className:String) {
super.init(className: className)
}
}
然后我有这个方法使用它来使异步调用更容易和流畅:
func GetAsyncObjects(query:STARCQuery, doNext: (dataObjects:[NewPFObject]) -> ()) {
query.findObjectsInBackgroundWithBlock { (newObjects:[PFObject]?, error:NSError?) -> Void in
if error == nil {
doNext(dataObjects: newObjects as! [NewPFObject])
}
}
}
最后,我有 use-case,错误发生的地方。
let query:PFQuery = PFQuery.init(className: "MyCustomClassInParse")
GetAsyncObjects(query) { (dataObjects) -> () in
if(dataObjects.count > 0) {
for customObject in dataObjects {
//Do something with customObject data
}
}
}
use-case处的错误与标题相同:
fatal errror: NSArray element failed to match the Swift Array Element type
它发生在最后的代码块上,在我在 for
循环中使用 dataObjects
数组的那一行。
当尝试多次转换它时,XCode 会说这样做是多余的,而实际上 运行 代码时并没有什么不同。同样的错误。
我真的什么都试过了,关于 PFSubclassing 的每一个 post 和 Whosebug 上的这个错误,似乎都找不到解决方案,所以我希望有人愿意提供帮助我出去!
谢谢!
return 来自 parseClassName
的值必须与 Parse.com 中定义的 class 名称相匹配,因此在您的情况下,parseClassName
需要至 return MyCustomClassInParse
这使 Parse 框架能够将 PFSubclassing
class 匹配到 Parse.com class 和 return 适当的对象。如果没有匹配项,那么您只会得到普通的 PFObject
实例,这就是为什么在尝试向下转换时会出现运行时错误的原因。
我正在尝试为 PFObject (Subclassing) 创建自定义 class,这似乎工作正常,但是当我尝试 convert/use 自定义 class object,作为一个普通的 PFObject,它搞砸了。这是我正在尝试做的事情。
首先,出于测试原因,我创建了名为 NewPFObject
的自定义 Class。
注意:我在 AppDelegate 中调用 NewPFObject.registerSubclass()
,然后再设置应用程序 ID。
class NewPFObject: PFObject, PFSubclassing {
static func parseClassName() -> String {
return "NewPFObject"
}
override init(className:String) {
super.init(className: className)
}
}
然后我有这个方法使用它来使异步调用更容易和流畅:
func GetAsyncObjects(query:STARCQuery, doNext: (dataObjects:[NewPFObject]) -> ()) {
query.findObjectsInBackgroundWithBlock { (newObjects:[PFObject]?, error:NSError?) -> Void in
if error == nil {
doNext(dataObjects: newObjects as! [NewPFObject])
}
}
}
最后,我有 use-case,错误发生的地方。
let query:PFQuery = PFQuery.init(className: "MyCustomClassInParse")
GetAsyncObjects(query) { (dataObjects) -> () in
if(dataObjects.count > 0) {
for customObject in dataObjects {
//Do something with customObject data
}
}
}
use-case处的错误与标题相同:
fatal errror: NSArray element failed to match the Swift Array Element type
它发生在最后的代码块上,在我在 for
循环中使用 dataObjects
数组的那一行。
当尝试多次转换它时,XCode 会说这样做是多余的,而实际上 运行 代码时并没有什么不同。同样的错误。
我真的什么都试过了,关于 PFSubclassing 的每一个 post 和 Whosebug 上的这个错误,似乎都找不到解决方案,所以我希望有人愿意提供帮助我出去!
谢谢!
return 来自 parseClassName
的值必须与 Parse.com 中定义的 class 名称相匹配,因此在您的情况下,parseClassName
需要至 return MyCustomClassInParse
这使 Parse 框架能够将 PFSubclassing
class 匹配到 Parse.com class 和 return 适当的对象。如果没有匹配项,那么您只会得到普通的 PFObject
实例,这就是为什么在尝试向下转换时会出现运行时错误的原因。