1

在我的应用程序中,我想实现一个简单的警报功能。我知道如何使用 UILocalNotifications,但我遇到了这个源代码,它具有与 iPhone 的本地时钟应用程序警报区域类似的 UI,并且它具有一种类型的数据持久性。这个源代码有两件事我不擅长界面设计和数据持久性。但是我下载了它并开始使用它,发现警报不是持久的。

下载

有谁知道如何调整源代码以使其持久化并且可以保存和读取plist?我也乐于学习,这个领域对我来说也有些陌生。谢谢

4

2 回答 2

0

尝试此代码...将 plist 从捆绑包保存到文档目录请注意,您将在第一次应用启动时出现“无法读取...”

- (NSMutableArray *)displayedObjects
    {
        if (_displayedObjects == nil)
        {
            NSString *path = [[self class] pathForDocumentWithName:@"Alarms.plist"];
            NSArray *alarmDicts = [NSMutableArray arrayWithContentsOfFile:path];

            if (alarmDicts == nil)
            {
                NSLog(@"Unable to read plist file: %@", path);
                NSLog(@"copy Alarms.plist to: %@", path);
                NSString *pathToSetingbundle = [[NSBundle mainBundle] pathForResource:@"Alarms" ofType:@"plist"];

                [[NSFileManager defaultManager]copyItemAtPath:pathToSetingbundle toPath:path error:nil];            
            }

            _displayedObjects = [[NSMutableArray alloc]
                                 initWithCapacity:[alarmDicts count]];

            for (NSDictionary *currDict in alarmDicts)
            {
                Alarm *alarm = [[Alarm alloc] initWithDictionary:currDict];
                [_displayedObjects addObject:alarm];
                 NSLog(@"@disply obj %@", alarm);
            }
        }

        return _displayedObjects;
    }
于 2012-11-12T08:39:28.270 回答
0

我查看了您的代码并发现您没有将“Alarms.plist”文件表单资源移动到文档目录的问题。我们无法编辑资源文件夹中的文件。所以在应用程序委托文件中编写以下代码。

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

NSString *theFileName = @"Alarms.plist"; //Change this appropriately

NSString *oldPath = [[NSBundle mainBundle] pathForResource:@"Alarms" ofType:@"plist"];//[NSString stringWithFormat:@"%@/Inbox/%@", documentsDirectory, theFileName];

NSString *newPath = [NSString stringWithFormat:@"%@/%@", documentsDirectory, theFileName];

if (![[NSFileManager defaultManager] fileExistsAtPath:newPath])

    [[NSFileManager defaultManager] moveItemAtPath:oldPath toPath:newPath error:nil];

对 Document 目录文件夹中的文件执行保存操作。

于 2012-11-12T05:03:15.170 回答