如何使用NSUserDefaults与今天的扩展共享数据(自定义对象数组)?

时间:2014-09-05 12:10:45

标签: ios swift widget nsuserdefaults ios-app-extension

基本上我想要做的是在我今天的扩展中填充一个UITableView,其中包含存储在我的包含应用程序中的数组中的对象。

我一直在阅读与使用NSUserDefaults在包含应用程序及其扩展程序之间共享数据有关的其他答案,我发现您无法在NSUserDefaults中存储自定义对象数组。这是我迄今为止尝试过的代码:

let group = "myGroupName"
        let sharedDefaults = NSUserDefaults(suiteName: group)
        sharedDefaults.setObject(MyArray, forKey: "Subjects")
        sharedDefaults.synchronize()

显然上面的代码不起作用,我不确定这是否是正确的做法,我对此仍然很陌生。

任何帮助都会非常感激,如果我以错误的方式解决这个问题,请指出我正确的方向。

修改
 我的阵列属于"主题"这是在结构中定义的。它由3个字符串(name,time1,time2)和UIColor(col)

组成
struct subject{
var name = "un-named"
var time1 = "un-described"
var time2 = "un-described"
var col: UIColor = UIColor.whiteColor()}

class SubjectManager: NSObject{
var subjectsMonA = [subject]()
var subjectsTuesA = [subject]()
var subjectsWedA = [subject]()
var subjectsThursA = [subject]()
var subjectsFriA = [subject]()
var subjectsMonB = [subject]()
var subjectsTuesB = [subject]()
var subjectsWedB = [subject]()
var subjectsThursB = [subject]()
var subjectsFriB = [subject]()}

我基本上想做的是制作阵列" subjectMonA"可用于我的今日推广。

1 个答案:

答案 0 :(得分:2)

您所要做的就是:

var defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(array, forKey: "Subjects")

并检索它:

var defaults = NSUserDefaults.standardUserDefaults()
defaults.objectForKey("Subjects")

更新

类型struct不是NSObject的子类。因此,除了作为对象之外,NSUserDefaults不会获胜。我建议您根据自己的需要使用NSDictionary(因为我不知道您是否可以插入Swift词典)。

var subject = NSDictionary() subject.setObject("未命名",forKey:" name") ...

如果语法错误,我道歉。我做到了这一点。