【问题标题】:How to retrive data from document directory when application start?应用程序启动时如何从文档目录中检索数据?
【发布时间】:2012-12-18 19:36:46
【问题描述】:

我创建了录制声音并在tableview 中显示该声音文件的应用程序。在该应用程序中,当录制声音时,filepath 将存储在一个数组中,我使用该数组填充我的tableview。但我的问题是,当我关闭应用程序时,我的数组将为空,并且我丢失了录制的文件。

所以现在我如何在我第二次打开我的应用程序时获取我的录制文件。我正在将声音文件存储在文档目录中。

【问题讨论】:

    标签: iphone ios nsdocumentdirectory


    【解决方案1】:

    将数组存储在NSUserDefaults 中。在NSUserDefaults 中检索和存储数组.. 参见NSUserDefaults 的示例

    在AppDelegate.h 文件中只声明变量...

        NSUserDefaults  *userDefaults;
        NSMutableArray *yourArray;
        after...
    

    在AppDelegate.m 中填充applicationDidFinishLonching: 方法

        userDefaults = [NSUserDefaults standardUserDefaults];
        NSData *dataRepresentingtblArrayForSearch = [userDefaults objectForKey:@"yourArray"];
        if (dataRepresentingtblArrayForSearch != nil) {
            NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingtblArrayForSearch];
            if (oldSavedArray != nil)
                yourArray = [[NSMutableArray alloc] initWithArray:oldSavedArray];
            else
                yourArray = [[NSMutableArray alloc] init];
        } else {
            yourArray = [[NSMutableArray alloc] init];
        }
        [yourArray retain];
    

    之后,当您想在此 UserDefaults 中插入数据时,请使用波纹管代码...

        [appDelegate.yourArray addObject:yourDataString];///set your value or anything which you want to store here...
        NSData *data=[NSKeyedArchiver archivedDataWithRootObject:appDelegate.yourArray];
        [appDelegate.userDefaults setObject:data forKey:@"yourArray"];
        [appDelegate.userDefaults synchronize];
    

    希望对你有帮助……

    【讨论】:

    • 您的代码最后一段是否用于更新我们 userDefults 中的可用数据?
    • 是的 plist 也适用于此用途.. 但我使用 userdefault bcoz 有时 plist 文件可能没有太大用处..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-17
    • 1970-01-01
    • 2020-12-03
    • 2021-09-01
    相关资源
    最近更新 更多