1

Parse を使用してプロフィール写真を保存する Swift プロジェクトがあります。なんらかの理由で、PFFile のプロフィール画像を操作するのが面倒でした。私は最終的に、この関数を使用してSwift 1.2で動作するようになりました:

func image(completion: (image: UIImage) -> Void)
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), {

        if self.profilePictureImage == nil
        {
            if self.profilePicture != nil
            {

                self.fetchIfNeeded()
                if let data = self.profilePicture!.getData()
                {
                    self.profilePictureImage = UIImage(data: data)

                }
            }else
            {
                self.profilePictureImage = UIImage(named: "no_photo")!
            }
        }

        dispatch_async(dispatch_get_main_queue(),{

            completion(image: self.profilePictureImage)

        })
    })
}

profilePictureそれは@NSManaged PFFile

profilePictureImage' is an内部UIImage`

プロジェクトを Swift 2.0 に移行しましたが、呼び出し時にラップされていない nil エラーでクラッシュしていcompletionます。

変更点 どうすればこれに対処できますか? ありがとう!

4

1 に答える 1

0

まず、PFFile のダウンロードと表示を自動的に処理するためParseUIのクラスを含むフレームワークを確認してください。PFImageView

アウトレットを作る

@IBOutlet weak var profilePictureImage: PFImageView!

典型的な使用法

// Set placeholder image
profilePictureImage.image = UIImage(named: "no_photo")

// Set remote image (PFFile)
profilePictureImage.file = profilePicture

// Once the download completes, the remote image will be displayed
profilePictureImage.loadInBackground { (image: UIImage?, error: NSError?) -> Void in
    if (error != nil) {
        // Log details of the failure
        println("Error: \(error!) \(error!.userInfo!)")
    } else {
        // profile picture loaded
    }
}

それ以外では、最近PFFile.getData()、iOS9 でのアプリ トランスポート セキュリティの変更により、Swift2 で動作しないという問題が発生したという投稿が多数あります。Parseによると、これは最新のSDKで修正されています

于 2015-10-01T16:34:46.623 に答える