ios - 如何将新的 NSMutableDictionary 保存到属性列表

标签 ios iphone objective-c dictionary property-list

我这里有这个方法,每次我按保存时它都会运行:

-(void)setName:(NSString *)foodName andCarbs:(NSNumber *)carbAmount{
    [self.userFoodDictionary setObject:(NSString *)foodName forKey:(NSString *)foodName];
    NSString *value = [[NSString alloc] initWithFormat:@"%@ Value", foodName];
    [self.userFoodDictionary setObject:(NSNumber *)carbAmount forKey:(NSString *)value];
    [self.userFoodDictionary writeToFile:self.appDataPath atomically:YES];
}

根据我的理解,倒数第二行应该将 userFoodDictionary 属性保存到指定的属性列表路径。但这种情况似乎没有发生过一次。我重建应用程序。也许我创建新字典对象的方式不正确。有人可以解释为什么这不起作用吗?

最佳答案

写入Plist

- (NSString *)foodDataPlistFilePath
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"UserFoodData.plist"];

    return filePath;
}

...

-(void)setName:(NSString *)foodName andCarbs:(NSNumber *)carbAmount{
    [self.userFoodDictionary setObject:(NSString *)foodName forKey:(NSString *)foodName];
    NSString *value = [[NSString alloc] initWithFormat:@"%@ Value", foodName];
    [self.userFoodDictionary setObject:(NSNumber *)carbAmount forKey:(NSString *)value];
    NSString *filePath = [self foodDataPlistFilePath];
    [self.userFoodDictionary writeToFile:filePath atomically:YES];
}

初始化可变字典:

NSString *filePath = [self foodDataPlistFilePath];
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:filePath];
self.userFoodDictionary = [[NSMutableDictionary alloc] init];
if(fileExists){
    NSDictionary *foodData = [NSDictionary dictionaryWithContentsOfFile:filePath];
    [_userFoodDictionary setDictionary:foodData];
}

关于ios - 如何将新的 NSMutableDictionary 保存到属性列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21325841/

相关文章:

ios - iOS 如何暂停 10 秒发送输入而不丢失数据

iphone - 如何使用具有一定随机性的 CAReplicatorLayer 创建 Spark 效果?

ios - 是否可以响应 UIAlertView 中的摇动手势?

objective-c - 我需要在 Nib 的文件所有者中为哪些顶级对象创建 Outlest,以便减少内存问题?

ios - heightForRowAtIndexPath 中的线程问题

ios - 如何在应用变换后原地旋转 View ?

ios - Main.Storyboard 框架未更新

ios - UINavigationBar setHidden 之前的 WebView LoadRequest 为 YES

ios - 代码签名错误 : code signing is required for product type 'Application' in SDK 'iOS 7. 0

iphone - 向 MKMapView 添加 subview (不是叠加层)