Ios 解析子类实例方法EXC_BAD_指令
当从parse user对象Ios 解析子类实例方法EXC_BAD_指令,ios,swift,parse-platform,exc-bad-access,exc-bad-instruction,Ios,Swift,Parse Platform,Exc Bad Access,Exc Bad Instruction,当从parse user对象PFUser生成子类时,使用自己的方法时会出现错误的指令。你们有没有想过为什么会这样 User.swift import UIKit import Parse class User: PFUser { // Instance Variables @NSManaged var photo: PFFile // Parse Setup override class func initialize() { struct
PFUser
生成子类时,使用自己的方法时会出现错误的指令。你们有没有想过为什么会这样
User.swift
import UIKit
import Parse
class User: PFUser {
// Instance Variables
@NSManaged var photo: PFFile
// Parse Setup
override class func initialize() {
struct Static {
static var onceToken : dispatch_once_t = 0;
}
dispatch_once(&Static.onceToken) {
self.registerSubclass()
}
}
// Instance Methods
func fetchPhoto(callback: (image: UIImage) -> Void) {
guard let url = self.photo.url else {
return
}
let request = NSURLRequest(URL: NSURL(string: url)!)
if let image = Globals.imageCache.imageForRequest(request) {
callback(image: image)
return
}
Globals.imageDownloader.downloadImage(URLRequest: request) { response in
if let image: UIImage = response.result.value {
callback(image: image)
Globals.imageCache.addImage(image, forRequest: request)
} else {
print(response)
}
}
}
}
ViewController.swift
import UIKit
import Parse
class User: PFUser {
// Instance Variables
@NSManaged var photo: PFFile
// Parse Setup
override class func initialize() {
struct Static {
static var onceToken : dispatch_once_t = 0;
}
dispatch_once(&Static.onceToken) {
self.registerSubclass()
}
}
// Instance Methods
func fetchPhoto(callback: (image: UIImage) -> Void) {
guard let url = self.photo.url else {
return
}
let request = NSURLRequest(URL: NSURL(string: url)!)
if let image = Globals.imageCache.imageForRequest(request) {
callback(image: image)
return
}
Globals.imageDownloader.downloadImage(URLRequest: request) { response in
if let image: UIImage = response.result.value {
callback(image: image)
Globals.imageCache.addImage(image, forRequest: request)
} else {
print(response)
}
}
}
}
导入UIKit
class ProfileHeaderController: UIViewController {
@IBOutlet weak var avatarButton: UIButton!
@IBOutlet weak var userLabel: UILabel!
@IBOutlet weak var nameLabel: UILabel!
private var user = User.current()
func updateHeader() {
self.userLabel.text = self.user.username
self.nameLabel.text = self.user.fullName
self.user.fetchPhoto { (image) -> Void in
self.avatarButton.setImage(image, forState: .Normal)
}
}
}
是的,您需要在Appdelegate中注册子类,或者在调用Parse.setApplicationId之前注册子类 在这段文字中说明了: 例如:
Appdelegate.swift
....
User.registerSubclass()
Parse.setApplicationId("appid", clientId:"clientid")
是否要覆盖方法或添加新方法?为什么要强制展开图像数据?尝试检查nil并记录任何错误conditions@GovindaraoKondala我正在尝试使用一种新方法wrote@Paulw11我在User.swift类中发布了错误的方法
uploadPhoto
。我已经更新了它,以显示我引用的方法fetchPhoto
。哪一行导致了异常?设置异常断点或在imageForRequest
和/或downloadImage
函数中设置断点,然后逐步执行。