gpt4 book ai didi

objective-c - 只有 NSMutableArray 的第一个对象存储在 NSUserDefaults 中

转载 作者:搜寻专家 更新时间:2023-10-30 20:25:30 24 4
gpt4 key购买 nike

我正在尝试存储一个 UILocalNotification 队列来解决 limit problem .我用了this approach它确实存档和取消存档我的对象,但只有第一个。

如何归档我的 NSMutableArray 中的所有对象?

代码

// init/unarchive queue
if (self.queue == nil)
{
// try loading stored array
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSData *dataRepresentingSavedArray = [currentDefaults objectForKey:@"LocalNotificationQueue"];
if (dataRepresentingSavedArray != nil) {
NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray];
if (oldSavedArray != nil) {
self.queue = [[NSMutableArray alloc] initWithArray:oldSavedArray];
}
else
{
self.queue = [[NSMutableArray alloc] init];
}
}
else
{
self.queue = [[NSMutableArray alloc] init];
}
}
// add
[self.queue addObject:notif];

// store queue
[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:self.queue] forKey:@"LocalNotificationQueue"];

如果我添加项目 1、2、3。重新启动并加载。我只有 3 个。

添加 1,2,3。重新启动并加载。我有 3、1、2。

如果重要的话。这是一个 Phonegap/Cordova CDVPlugin。

最佳答案

之后

[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:self.queue] forKey:@"LocalNotificationQueue"];

你需要打电话

[[NSUserDefaults standardUserDefaults] synchronize]

保存用户默认值。

关于objective-c - 只有 NSMutableArray 的第一个对象存储在 NSUserDefaults 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14731111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com