基本上我想要做的是在我今天的扩展中填充一个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"可用于我的今日推广。
答案 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") ...
如果语法错误,我道歉。我做到了这一点。