我正在使用 swift 和 parse.com 开发一个应用程序,但我对应用程序的模型有疑问。
我有一个包含 Category 类的 Event 类。
这是我的类别类:
class Category : PFObject, PFSubclassing{
override class func load() {
self.registerSubclass()
}
class func parseClassName() -> String! {
return "Category"
}
var nameCategory:String="";
var image:String="";
private let KeyName:String = "label";
private let KeyImage:String = "image";
func fromPFObject(object:PFObject)->Category{
self.nameCategory = object[self.KeyName] as String;
self.image = object[self.KeyImage] as String;
return self;
}
这是我的事件类:
class Event {
//Variables de classe
var name:String;
var category:Category;
// Descripteur de colone en base
private let KeyEventName:String = "event_name";
private let KeyCategory:String = "category";
func insert(){
var event = self.toPFObject()
event.saveInBackgroundWithBlock {
(success: Bool!, error: NSError!) -> Void in
if (success != false) {
println("Object created with id: \(event.objectId)")
self.id = event.objectId;
} else {
println(error)
}
}
}
func select(id:String){
var query = PFQuery(className: self.KeyClassName)
query.getObjectInBackgroundWithId(id) {
(event: PFObject!, error: NSError!) -> Void in
if (error == nil) {
self.fromPFObject(event);
} else {
println(error)
self.eventKO("Une erreur c'est produite");
}
}
}
func toPFObject()->PFObject{
var event = PFObject(className: self.KeyClassName)
event[self.KeyCategory] = self.category;
event[self.KeyEventName] = self.name
return event;
}
func fromPFObject(event:PFObject)->Event{
self.activ = event[self.KeyActif] as Int;
var test = event[self.KeyCategory] as PFObject;
var label = test["label"] as String;
self.category = event[self.KeyCategory] as Category;
self.name = event[self.KeyEventName] as String;
return self;
}
我很好地检索了事件的名称,但没有检索到类别。我在我的模型中遗漏了一些东西。
你有什么想法吗?
最佳答案
我发现直接使用对象而不是子类化更简单。
只需按如下方式引用您的类的属性:
// non optional of type String that defaults to an empty string
let firstName = object["firstName"] as? String ?? ""
如果您有链接的类(class),例如如果 Category 是您引用的另一个类,则以下工作干净利落
if let category = object["category"] as? PFObject {
let name = category["name"] as? String ?? ""
}
同样,无需为简单对象的所有子类搞乱。
我已经使用这个模式来填充 PFQueryTableViewControllers、自定义表、自定义 View 等。
关于ios - 如何使用 swift 在 parse.com 中检索模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27760082/