如何保存相关的核心数据对象以使用swift进行解析

时间:2016-01-04 16:02:04

标签: swift core-data parse-platform

我的应用是一个简单的单词列表共享应用。有些实体拥有实体Wordlists,其中包含CoreData中相关单词的实体。在一个屏幕中,我希望能够通过按下按钮将wordList及其相关单词和所有者保存到Parse。然后在另一个屏幕中,我希望能够下载WordList及其相关单词,然后将其保存到核心数据。在表格中显示列表的名称。我的代码是:

// To save the wordList to Parse:

@IBAction func shareWordList(sender: AnyObject) {

    let parseWordList = PFObject(className: "WordList")
    parseWordList.setObject("\(wordList?.listName)", forKey: "ListName")
    parseWordList.setObject("\(wordList?.owner)", forKey: "Owner")
    parseWordList.setObject("\(wordList?.words)", forKey: "Words")
    parseWordList.setObject("\(wordList?.isSharedDate)", forKey:     "IsSharedDate")
    parseWordList.setObject("\(wordList?.isShared)", forKey: "IsShared")
    parseWordList.setObject("\(wordList?.createdDate)", forKey: "CreatedDate")
    parseWordList.setObject("\(wordList?.isAppList)", forKey: "IsAppList")

    parseWordList.saveInBackgroundWithBlock { (succeeded, error) -> Void in
        if succeeded {
            print("object uploaded")
        } else {
            print("Error: \(error) \(error?.userInfo)")
        }
    }

这对于大多数项目上传都是正常的,但与wordList相关的单词和所有者不会保存。 enter image description here

是否可以像Parse一样使用这样的关系属性?然后,我如何获得共享的wordList及其所有属性从Parse返回到CoreData?

提前感谢任何人对此有所帮助......

1 个答案:

答案 0 :(得分:1)

此代码"\(wordList?.words)"正在获取关系内容的可读描述。这是托管对象的NSSet的日志描述。这就是你在解析数据存储中基本上乱码的原因。

您真正想要做的是获得关系,然后询问每个项目的name。你可以用KVC做到这一点。当你拥有它时,你可以用NSSet字符串直接存储。

可以说,在解析数据存储中有多个与核心数据模型中的实体匹配的不同类会更好。如果这样做,那么您可以处理关系项以在解析数据存储中创建新对象,然后将它们(一旦保存)添加到解析关系。

也可以使用REST接口解析像RestKit这样的库,从解析数据存储内容直接映射到核心数据。