我这里有这个方法,每次我按保存时它都会运行:
-(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/