数据存储到plist文件中

时间:2018-03-29 05:30:29

标签: ios iphone plist

一旦plist被创建,数据存储自动开始,但一段时间后它会自动停止在plist中存储数据。但有一次,当我杀了应用程序并重新启动时,它会再次启动,如前所述并且循环继续......

这是我的代码

- (void)saveLocationsToPlist:(NSMutableDictionary*)mdictPlist {


    NSString *plistName = [NSString stringWithFormat:@"LocationArray.plist"];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docDir = [paths objectAtIndex:0];
    NSString *fullPath = [NSString stringWithFormat:@"%@/%@", docDir, plistName];

    NSMutableDictionary *savedProfile = [[NSMutableDictionary alloc] initWithContentsOfFile:fullPath];
    NSLog(@"ADD LOCATION TIME : %@",[NSDate date]);
    NSLog(@"ADD LOCATION DATA : %@",mdictPlist);

    if (![[NSFileManager defaultManager] fileExistsAtPath:fullPath]){
        BFLog(@"applicationDocumentsDir Not exists");
        fullPath = [docDir stringByAppendingPathComponent: [NSString stringWithFormat:@"LocationArray.plist"] ];

    }

    if (!savedProfile) {
        savedProfile = [[NSMutableDictionary alloc] init];
        self.myLocationArrayInPlist = [[NSMutableArray alloc]init];
    } else {
        self.myLocationArrayInPlist = [savedProfile objectForKey:@"LocationArray"];
    }

    if(mdictPlist) {
        if(self.myLocationArrayInPlist == nil){
            self.myLocationArrayInPlist = [[NSMutableArray alloc]init];
        }

        [_myLocationArrayInPlist addObject:mdictPlist];
        [savedProfile setObject:_myLocationArrayInPlist forKey:@"LocationArray"];
    }


    if (![savedProfile writeToFile:fullPath atomically:FALSE]) {
        BFLog(@"Couldn't save LocationArray.plist savedProfile :- %@ \n Location Data :- %@ \n fullPath:-%@",savedProfile,mdictPlist,fullPath);

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

        NSFileManager *fm = [NSFileManager defaultManager];
        NSString *directory = [documentsDirectoryPath stringByAppendingPathComponent:@""];
        NSError *error = nil;
        for (NSString *file in [fm contentsOfDirectoryAtPath:directory error:&error]) {
            NSLog(@"%@",[NSString stringWithFormat:@"%@/%@", directory, file]);
            if([file isEqualToString:@"LocationArray.plist"]){
                BOOL success = [fm removeItemAtPath:[NSString stringWithFormat:@"%@/%@", directory, file] error:&error];
                if (!success || error) {
                    // it failed.
                    BFLog(@"Delete error : %@",error);

                }
                else {
                    [self saveLocationsToPlist:myLocationDictInPlist];
                }
            }
        }
    }
}

关于这个问题的任何想法。

0 个答案:

没有答案
相关问题