ios - 数据未保存到属性列表 - iOS

标签 ios objective-c plist

我已经学习了很多教程,用谷歌搜索了这个问题,但无法理解为什么我无法将数据保存到属性列表中

在我的整个研究过程中,我能够确定“writeToFile”返回 0,这可能是由于自定义数据类型(类)造成的,但我试图保存的只是一个与属性列表兼容的 NSNumber。

请帮忙,因为我不知道为什么这不会保存,我正在 iPhone 模拟器中测试,~/Documents 文件夹中没有创建文件

问候

- (void)saveData{

    NSLog(@"*** SAVING DATA ***");
    DataManager *datamgr = [DataManager sharedManager];

    NSString *error;

    //get path of data plist in users Document directory
    NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *plistPath = [rootPath stringByAppendingPathComponent:@"Data.plist"];

    NSNumber *gems = [NSNumber numberWithInt:datamgr.gemCount];

    //create arrays for data and keys
    NSArray *data = [NSArray arrayWithObjects:gems, nil];
    NSArray *keys = [NSArray arrayWithObjects:@"Gems", nil];

    //create dictionary with data against keys
    NSDictionary *plistDict = [NSDictionary dictionaryWithObjects:data forKeys:keys];

    NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:plistDict
                                                               format:NSPropertyListXMLFormat_v1_0
                                                     errorDescription:&error];

    //write file from dictionary
    if(plistData) {
        if([plistData writeToFile:plistPath atomically:YES] != 0){
            NSLog(@"write file to plist");
        }
    }
    else {
        NSLog(@"%@",error);
    }
}

最佳答案

我唯一能看出错误的是你在搜索什么目录。尝试更改:

//get path of data plist in users Document directory
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) objectAtIndex:0];

对此:

//get path of data plist in users Document directory
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

我还建议在物理设备上调试,模拟器没问题,但在某些情况下它确实有自己的问题。

关于ios - 数据未保存到属性列表 - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23137237/

相关文章:

ios - 尝试打印整个数组,但只有最后一个打印到 textview

ios - -hidesBottomBarWhenPushed 在导航 Controller 中使用时会导致问题

objective-c - 如何对 NSArray 中的数字进行排序?

ios - 如何让两个 iOS 应用共享 plist?

java - 为 iOS、Android 和桌面开发应用程序

iphone 延迟来自服务器的响应

objective-c - 在 uisplitviewcontroller 中关闭 NavigationController 后如何重新加载 tableView?

iOS:当应用程序进入后台调用电话时,如何防止启动画面显示?

ios - 尝试从 plist 中读取整数会导致意外结果

ios - 在 iOS 中从图片中获取文本