我对iOS/Swift/Parse非常陌生,我正在尝试使用PFSubclassing构建一个类的模型。
我试图表示的数据应该类似于这个
{
text: ""
location : {
name: "",
longitude: "",
latitude: ""
}
},所以我的模型是
class LocationModel {
var name: String?
var longitude: Float?
var latitude: Float?
}
class PostModel: PFObject, PFSubclassing {
class func parseClassName() -> String! {
return "Post"
}
@NSManaged var text: String?
var location: LocationModel?
}test属性正在成功保存,但我无法获得要保存的location属性。
我用来保存要解析的记录的代码是
var test = PostModel()
test.location?.name = "ESB"
test.location?.latitude = 1
test.location?.longitude = 1
test.text = "This is a test post to see if this works!"
test.saveEventually { (success: Bool, error: NSError!) -> Void in
println(error)
println(success)
}我在网上做了很多调查,但是我无法找到一个解决方案,说明如何使用Parse PFSubclassing在Swift中表示一个Object数据类型
任何帮助都将不胜感激。谢谢
发布于 2018-05-15 11:00:46
这是我的解决方案:
例如,我将创建一个英雄对象。
class Hero: PFObject, PFSubclassing {
@NSManaged var strengthPoint: Double
@NSManaged var name: String
static func parseClassName() -> String {
return "Hero"
}
init(strengthPoint: Double, name: String) {
super.init()
self.strengthPoint = strengthPoint
self.name = name
}
init(pfObject: PFObject) {
super.init()
self.strengthPoint = pfObject.object(forKey: "strengthPoint") as! Double
self.name = pfObject.object(forKey: "name") as! String
}
override init() {
super.init()
}
override class func query() -> PFQuery<PFObject>? {
let query = PFQuery(className: self.parseClassName())
query.order(byDescending: "createdAt")
query.cachePolicy = .networkOnly
return query
}
}现在,在定义模型之后,您可以使用这些方法来存储和检索
在服务器中创建对象
func createHero() {
let hero = Hero(strengthPoint: 2.5, name: "Superman")
hero.saveInBackground { (isSuccessful, error) in
print(error?.localizedDescription ?? "Success")
}
}从服务器检索对象
func retrieveHero() {
let query = Hero.query()
query?.getFirstObjectInBackground(block: { (object, error) in
if error != nil {
print(error?.localizedDescription ?? "Something's wrong here")
} else if let object = object {
let hero = Hero(pfObject: object)
print(hero.strengthPoint) // 2.5
print(hero.name) // Superman
}
})
}发布于 2015-06-10 04:44:27
在SWIFT1.2中,我看到了几种不同的PFSubclassing方法,但以下方法对我来说效果最好:
首先,确保目标-C桥接头中有以下内容:
#import <Parse/PFObject+Subclass.h>下面是子类PFObject的一个非常基本的示例
import Foundation
import Parse
class Car: PFObject, PFSubclassing {
override class func initialize() {
self.registerSubclass()
}
static func parseClassName() -> String {
return "Car"
}
@NSManaged var model: String
@NSManaged var color: String
@NSManaged var yearManufactured: Int
}所以在你的情况下,这将是:
class PostModel: PFObject, PFSubclassing {
override class func initialize() {
self.registerSubclass()
}
static func parseClassName() -> String {
return "Post"
}
@NSManaged var text: String?
}关于你的LocationModel.我有点搞不懂你到底想用它做什么。我希望这能帮到你。
https://stackoverflow.com/questions/28825434
复制相似问题