- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
*子类在我的应用委托(delegate)中注册
用户可以创建classroom
对象。问题是当创建一个新的 classroom
对象时,以下查询会将最新的 classroom
作为 PFObject
读取。这将使程序崩溃。
以前创建的classrooms
将被正确读取。
另外 - 当我关闭应用程序并重新启动它时,最新的教室被正确地读取为 classroom
。如何将新创建的类转换到正确的子类中?
收到的错误是:
fatal error: NSArray element failed to match the Swift Array Element type
谢谢!
classroom
对象的类代码:
class Classroom: PFObject, PFSubclassing{
var professorLastName: String?
var classTitle: String?
var toSchool: School?
var subjectLevel: String?
var subject: String?
var enrolledUsers: [PFUser]?
//THIS IS FOR CREATING A NEW CLASS
func enrollClass(){
let classroom = PFObject(className: "Classroom")
classroom["subject"] = self.subject
...
classroom.saveInBackgroundWithBlock { (success: Bool, error: NSError?) -> Void in
print("added student to class.")
}
}
//start protocol code for PFSubclass
static func parseClassName() -> String {
return "Classroom"
}
override class func initialize() {
var onceToken : dispatch_once_t = 0;
dispatch_once(&onceToken) {
self.registerSubclass()
}
}
//end
这是从 Parse 数据库中提取教室并将其放入 TableView 行单元格中的查询:
查询:
let query = PFQuery(className: "_User")
query.includeKey("enrolledClasses")
query.getObjectInBackgroundWithId(PFUser.currentUser()!.objectId!) {(result:PFObject?, error: NSError?) -> Void in
let userEnrolledClasses = result!["enrolledClasses"] as! [Classroom]
completionBlock(userEnrolledClasses)
插入行单元格:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("enrolledClassCell") as! EnrolledClassesTableViewCell
//THE CODE CRASHES HERE!!!!
let classroom = timelineComponent.content[indexPath.row] as? Classroom
//NSARRAY FAILED TO MATCH ARRAY TYPE -> It's still PFObject
classroom?.setClass()
cell.enrolledOption.text = classroom?.classTitle
return cell
}
应用委托(delegate):
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
Classroom.registerSubclass()
School.registerSubclass()
Post.registerSubclass()
PostPoints.registerSubclass()
ReplyPost.registerSubclass()
ReplyPostPoints.registerSubclass()
SubjectList.registerSubclass()
Parse.enableLocalDatastore()
**根据 Daniel 的修复新代码...
所以对象被读取为 classroom
但现在尝试从 classroom 对象中提取数据是行不通的。所以我想将标签设置为表格行的 classroom.classTitle
,但数据始终为零...
//TIMELINE IMPLEMENTATION
func loadInRange(range: Range<Int>, completionBlock: ([Classroom]?) -> Void) {
Classroom.registerSubclass()
let query = PFQuery(className: "_User")
query.includeKey("enrolledClasses")
query.getObjectInBackgroundWithId(PFUser.currentUser()!.objectId!) {(result:PFObject?, error: NSError?) -> Void in
let rawPFObject = result!["enrolledClasses"] as! [PFObject]
var classroomArray: [Classroom] = []
for rawClassroom in rawPFObject{
let convertedClassroom = Classroom()
convertedClassroom.classTitle = rawClassroom["classTitle"] as? String
convertedClassroom.subject = rawClassroom["subject"] as? String
convertedClassroom.professorLastName = rawClassroom["professorLastName"] as? String
convertedClassroom.subjectLevel = rawClassroom["classTitle"] as? String
classroomArray.append(convertedClassroom)
}
completionBlock(classroomArray)
}
}
标签分配:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("enrolledClassCell") as! EnrolledClassesTableViewCell
//the tableViewCell post is equal to the post[arrayNumber]
let classroom = timelineComponent.content[indexPath.row] as? Classroom
//CLASSROOM VALUES ARE ALL NIL HERE
classroom?.setClass()
cell.enrolledOption.text = classroom?.classTitle
return cell
}
控制台读数:
也许这与 objectId 是"new"有关?
读取timelineComponent.content
最佳答案
您遇到的问题是转换为 Classroom
数组在您的查询中无法正常工作。这可能是 Parse 对象子类的一个缺点。
解决方法是创建一个将传递给 completionBlock 的临时数组。
在此临时数组中将添加 Classroom
对象,这些对象明确创建为 Parse 子类。
在您的类中,添加:
func loadFromObject(object: PFObject) {
// Setup a Classroom object from a PFObject.
self.subject = object["subject"]
...
}
在您的查询中,替换这些行
let userEnrolledClasses = result!["enrolledClasses"] as! [Classroom]
completionBlock(userEnrolledClasses)
与
var classroomArray = Array<Classroom>()
for class in result!["enrolledClasses"] {
let newClass = Classroom().loadFromObject(class)
classroomArray.append(newClass)
}
completionBlock(classroomArray)
关于ios - PFObject 未被转换为子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33851636/
[X-Post from parse.com] Person是 PFObject 的子类 . Address也是 PFObject 的子类 . Address有一个 @property类型 Perso
我在 Parse(在 iOS 上)中的当前用户返回正常,它拥有的属性之一是指向 PFObject“A”的指针。因此,当我获得当前用户时,我可以在当前用户中看到指向“A”的有效指针。 我不知道如何从那里
我正在尝试创建一个可以删除以下项目的函数: var array = [23,36,12,45,52,63] removeItem(12,array) result : array = [23,36,4
所以我正在设置这个应用程序,用户可以看到他们的位置,也可以看到其他人的位置。对于脚本,我正在关注这个问题。 how to retrive location from a PFGeopoint - (P
我正在使用 PFObject 子类化,例如: @interface CarObject : PFObject @property (nonatomic, strong) BrandObject *b
我只是想知道最简单/建议的方法是删除 PFObject 及其相关的所有内容。例如,在照片分享应用中,如果上传者想删除他/她发布的照片,您如何同时删除与该照片相关的所有“赞”和评论? 现在,我正在使
假设我有一组“myObject”类的PFObjects(本质上是字典)。此类的对象包含字典键“myDictionary”。反过来,“myDictionary”有一个键“myKey”,我想访问它并搜索与
我在 Xcode 中出现一个错误,提示“Downcast from '[PFObject]?'” '[PFObject]' 只解包可选值;您是要使用“!”吗? var iDArray = [S
Xcode 6.3.1:错误:无法将“PFObject”类型的值分配给“PFObject!”的值 试图理解更严格的 Swift '!'和 '?'要求,因为我认为这是错误的主要原因。 问题出在下面的代码
我正在将解析查询保存到数组中,但在 if letobjects=objectsas? 上出现以下错误? [PF对象] 并且出现以下错误:从“[PFObject]?”向下转型?到“[PFObject]”
我有一个名为 FriendRelation 的 Parse 类。这个类(class)有两个用户,一个是 friend ,另一个是用户。 我想获取用户的所有 friend 发布的所有消息。我尝试使用以下
然后我尝试将键从 PFObject 转换为字符串,但出现错误。我在 Parses 网站上找不到任何内容。请帮忙 var findProgram = PFQuery(className: "Progra
在我的应用程序中,当我尝试注册时,PFObjects 未保存在后台(emailLabel、FirstNameLabel、LastNameLabel、PasswordLabel。知道为什么吗 这是一个代
我已将 userIds 保存在解析为 String 的列中,并且我想将其转换为 PFObject 。我怎样才能快速做到这一点?我试图按如下方式检索 userId: followedUserQuery.
我有一个计时器,可以将当前日期倒计时到我在 Parse 中设置的日期(类名:“Date”)。现在,它使用我设置的 ObjectId 检索该数据。我想将其设置为使用“updatedAt”列中的日期来调用
我已经查看了所有内容,人们说使用 whereKey: equalTo: 可以在数组中工作,但由于某种原因它不适合我。我试图让用户搜索标签,并且包含该标签的所有帖子都会出现。当我删除 whereKey:
我有一个PFObject,Account,其中包含一个User数组,它们是PFUsers的子类。然后,User 有一个 NSDictonary 属性 allowableApps,它是一个 NSDict
我使用 Parse 作为我的后端,我试图让两个子类映射到同一个表。 在我的模型中,我有一个抽象的 Post 类,它符合 PFSubclassing 协议(protocol)并包含几个属性和方法。在我的
我想将来自 Parse 查询的 PFObjects 保存在我的类称为 listdata 的 NSMutableArray 中。我稍后会使用 listdata 数组。当我跟踪我的代码时,它会为找到的每个
我在使用 key 成功检索 PFObject 时遇到问题。对象最后为零: var object = PFObject(className:"Topic") var query = PF
我是一名优秀的程序员,十分优秀!