【发布时间】:2013-01-21 18:31:14
【问题描述】:
我正在尝试存储 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 CDVP 插件。
【问题讨论】:
-
您记得同步吗?因为它没有出现在您共享的代码中..
-
您在评论中提到
@synchronize(self):您的代码是否同时从多个线程调用? -
@MartinR 这是一个 Phonegap 插件,从 JavaScript 调用。也许有不止一个线程。不确定...
标签: objective-c cordova archive