首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Swift 4中解压缩NSMutableArray

在Swift 4中解压缩NSMutableArray
EN

Stack Overflow用户
提问于 2018-02-24 16:57:03
回答 1查看 290关注 0票数 0

我正在将对象添加到NSMutableArray中,并使用NSKeyedArchiver和UserDefaults对其进行归档。

对象被添加到数组中,我可以从日志控制台看到它。我还可以看到归档对象包含该对象。

问题是,每当我解压缩对象并将它们添加到可变数组中时,它总是返回1,不管我添加了多少个对象。

我得到的是:

将对象保存到数组

代码语言:javascript
复制
trackNumberOfQuestionPlayed.add(questionsArray[randomQuestion] as AnyObject)

let saveQuestionsPlayed = NSKeyedArchiver.archivedData(withRootObject: trackNumberOfQuestionPlayed)
UserDefaults.standard.set(saveQuestionsPlayed, forKey: "QuestionsPlayed")
UserDefaults.standard.synchronize()

print(UserDefaults.standard.object(forKey: "QuestionsPlayed"))

检索对象

代码语言:javascript
复制
if let data = UserDefaults.standard.object(forKey: "QuestionsPlayed") as? Data {

   if let trackNumberOfQuestionPlayed = (NSKeyedUnarchiver.unarchiveObject(with: data) as? NSMutableArray)
    {
       // In here you can access your array
       print("Number of questions array is NOT empty: \(trackNumberOfQuestionPlayed.count)")
    }
}
EN

回答 1

Stack Overflow用户

发布于 2018-02-26 19:02:20

好吧,我在回答我自己的问题。结果是,只要稍微调整一下,就可以像我的问题中所描述的那样保存一个数组。结果是我的智力测验游戏中的其他代码把这一切搞得一团糟。把它整理出来,下面的代码开始工作了:

将对象保存到数组

代码语言:javascript
复制
 trackNumberOfQuestionPlayed.add(questionsArray[randomQuestion] as AnyObject)
            let saveQuestionsPlayed = NSKeyedArchiver.archivedData(withRootObject: trackNumberOfQuestionPlayed)
            UserDefaults.standard.set(saveQuestionsPlayed, forKey: "QuestionsPlayed")
            UserDefaults.standard.synchronize()
            print("Count: \(trackNumberOfQuestionPlayed.count)")

检索对象

代码语言:javascript
复制
if let data = UserDefaults.standard.object(forKey: "QuestionsPlayed") as? Data {

            if let trackNumberOfQuestionPlayed = (NSKeyedUnarchiver.unarchiveObject(with: data) as? NSMutableArray)
            {
                // In here you can access your array
                self.trackNumberOfQuestionPlayed = trackNumberOfQuestionPlayed
                print("Number of questions array is NOT empty: \(trackNumberOfQuestionPlayed.count)")
            }
        } else {

            trackNumberOfQuestionPlayed = NSMutableArray()
            print("questionsplayed is empty")
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48965285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档