我正在子类化一个名为“Item”的 Parse 对象。以下所有内容均基于 Parse 文档:https://parse.com/docs/ios/guide#objects-subclasses
我试图从 Parse 获取对象,并简单地添加一个名为 thumbnailImage
的本地属性,其类型为 UIImage
。
This is my bridging header:
#ifndef My_Bridging_Header_h
#define My_Bridging_Header_h
#endif /* My_Bridging_Header_h */
#import <Parse/PFObject+Subclass.h>
这是我的“Item.swift”文件:
import UIKit
import Parse
class Item : PFObject, PFSubclassing {
override class func initialize() {
struct Static {
static var onceToken : dispatch_once_t = 0;
}
dispatch_once(&Static.onceToken) {
self.registerSubclass()
}
}
@NSManaged var thumbnailImage: UIImage
static func parseClassName() -> String {
return "Item"
}
}
最后,在我的 viewController 中,代码卡在 "hello world"
行之后:
let query = PFQuery(className: "Item")
query.whereKey("expired", equalTo: false)
query.findObjectsInBackgroundWithBlock({ (results, error) -> Void in
if error != nil {
print(error)
}
else {
self.itemsToDisplay.removeAll()
print(results!.count)
self.itemsToDisplay = results as! [Item]
for item in self.itemsToDisplay {
let downloadedItemThumbnailImage = item["thumbnailImage"] as! PFFile
do {
let downloadedItemThumbnailImageData = try UIImage(data: downloadedItemThumbnailImage.getData())
print("hello world")
//问题行在下面
item.thumbnailImage = downloadedItemThumbnailImageData!
print("now I am here!")
}
catch {
print("error with downloaded image data")
}
}
itemsToDisplay 是 [Item]
的数组,它是我的 PFObject 子类。
Xcode 没有给我任何错误消息,但最终我确实收到了内存警告并且必须退出应用程序。不确定发生了什么。
为什么这不起作用:item.thumbnailImage = downloadedItemThumbnailImageData!
如何在子类 PFObject 上设置此本地属性?
最后,我在 AppDelegate.swift 文件的顶部注册了我的子类:
//解析寄存器子类
Item.registerSubclass()
最佳答案
当子类化 PFObject 时,您不希望直接将 UIImage 作为属性。相反,将其设为 PFFile。这允许您下载文件,然后获取图像数据。
如果你想在同一个类中完成所有这些,你可以下载文件然后设置属性而不使用@NSManaged,但是,这可能不会提供任何好处,只要图像保存在内存中对象是。
关于ios - Parse Swift - 子类化 PFObject - 设置属性导致应用程序挂起且没有错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35025201/