2017-07-31 70 views
0

我想要從我的一個集合中取出一個對象數組。我一直在使用他們的文檔和一些谷歌搜索,我相信我接近解決方案,但不夠接近。下面是我有:與Kinvey一起使用對象映射

class Clothing: Entity { 

    var categories: [Category]! 
    var gender: String! 

    override class func collectionName() -> String { 
    //return the name of the backend collection corresponding to this entity 
     return "categories" 
    } 

    override func propertyMapping(_ map: Map) { 
     super.propertyMapping(map) 

     categories <- map["clothing"] 
     gender <- map["gender"] 

    } 
} 


class Category: NSObject, Mappable{ 

    var title: String? 
    var image: String? 

    convenience required init?(map: Map) { 
     self.init() 
    } 

    func mapping(map: Map) { 
     title <- map["category"] 
     image <- map["image"] 
    } 
} 

我能夠得到正確的性別,但似乎類別的陣列並沒有被映射到類別的對象。有什麼想法嗎?

回答

0

您的模型實際上有一個問題,您可以在https://devcenter.kinvey.com/ios/guides/datastore#Model處看到,您應該使用let categories = List<Category>()而不是var categories: [Category]!。下面是測試和工作模式:

import Kinvey 

class Clothing: Entity { 

    let categories = List<Category>() 
    var gender: String! 

    override class func collectionName() -> String { 
     //return the name of the backend collection corresponding to this entity 
     return "clothing" 
    } 

    override func propertyMapping(_ map: Map) { 
     super.propertyMapping(map) 

     categories <- ("categories", map["categories"]) 
     gender <- ("gender", map["gender"]) 

    } 
} 

class Category: Object, Mappable{ 

    var title: String? 
    var image: String? 

    convenience required init?(map: Map) { 
     self.init() 
    } 

    func mapping(map: Map) { 
     title <- ("category", map["category"]) 
     image <- ("image", map["image"]) 
    } 
} 

,這裏是一個示例代碼如何保存新Clothing對象

let casualCategory = Category() 
casualCategory.title = "Casual" 

let shirtCategory = Category() 
shirtCategory.title = "Shirt" 

let clothing = Clothing() 
clothing.gender = "male" 
clothing.categories.append(shirtCategory) 
clothing.categories.append(casualCategory) 

dataStore.save(clothing) { (result: Result<Clothing, Swift.Error>) in 
    switch result { 
    case .success(let clothing): 
     print(clothing) 
    case .failure(let error): 
     print(error) 
    } 
} 
+0

太謝謝你了!事實上,因爲這個原因,我改變了很多我的收藏,但現在我可以回到我最初嘲笑的東西。 –