ios - Parse Swift - 子类化 PFObject - 设置属性导致应用程序挂起且没有错误消息

标签 ios swift parse-platform subclass

我正在子类化一个名为“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/

相关文章:

ios - dispatch_async 和异步请求的问题

iphone - 如何在 APNS 中发布推送通知以及如何在 iPhone 中显示通知?

swift - 如何在我的应用程序中使用约束?

从 Parse.com 的 CloudCode 接收空数组时 iOS 崩溃

javascript - Typescript在线保存数据的具体方法?

xcode - 从 Parse 中提取图像到一个数组中

ios - MBProgressView sleep 混合 View

ios - 在 UIScrollView 和嵌入 UICollectionView 之间传递滚动

ios - UIView socket 和 ChildViewController 之间有什么区别?

ios - 如何让 SwiftUI 动态响应用户事件?