在核心数据iOS中保存json数据
Posted
技术标签:
【中文标题】在核心数据iOS中保存json数据【英文标题】:saving json data in core data iOS 【发布时间】:2016-05-07 06:19:05 【问题描述】:我有一个看起来像这样的 json 对象。这是从 url 获取的 json api,我正在尝试将其保存在核心数据中。
"moods_name":"mood1",
"description":"mood",
"c1":"9BFF80",
"c2":"EA8CFF",
"c3" :"D1FFB0",
"c4":"FF63FC","c5":"6B6B6B",
"font_name":"Default",
"font_size":"3",
"font_color":"000000"
如何逐个字符串存储这个字符串,或者有其他方法来存储它。请帮帮我。
这是我获取 json 数组的方法。
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
NSError * localError=nil;
NSArray *listArray = [NSJSONSerialization JSONObjectWithData:getData options:0 error:&localError];
if (!listArray)
NSLog(@"error parsing json %@",localError);
else
NSLog(@" JSON DATA%@",listArray);
我的问题是如何编写将json数组保存在核心数据中的save方法。
【问题讨论】:
数组名是什么,json值怎么改,能否更新一下代码 我已经更新了代码。请检查一下 好的,我会发布答案 【参考方案1】:首先添加所有使用核心数据的方法并在下面引用,
http://code.tutsplus.com/tutorials/core-data-from-scratch-core-data-stack--cms-20926 http://www.techotopia.com/index.php/An_ios_7_Core_Data_Tutorial
如果你使用了AppDelegate
中的所有方法,那么 ViewController 在下面添加两个方法
如果你得到 listArray 的值,那么使用下面的代码,
ViewController 方法:
- (IBAction)savevalues:(id)sender
// first convert the json array to NSString type code below,
NSString *m_name = [listArray valueForKey:@"moods_name"];
NSString *desc = [listArray valueForKey:@"description"];
NSString *c1 = [NSString stringWithFormat:@"%@",[listArray valueForKey:@"c1"]];
NSString *c2 = [NSString stringWithFormat:@"%@",[listArray valueForKey:@"c2"]];
NSString *c3 = [NSString stringWithFormat:@"%@",[listArray valueForKey:@"c3"]];
NSString *c4 = [NSString stringWithFormat:@"%@",[listArray valueForKey:@"c4"]];
NSString *font_name = [listArray valueForKey:@"font_name"];
NSString *font_size = [NSString stringWithFormat:@"%@",[listArray valueForKey:@"font_size"]];
NSString *font_color = [NSString stringWithFormat:@"%@",[listArray valueForKey:@"font_color"]];
[self createNewListWithTitle:m_name describtion:desc c1Val:c1 c2Val:c2 c3Val:c3 c4Val:c4 font_nameVal:font_name font_sizeVal:font_size font_colorVal:font_color];
//上传的是NSManagedObject类,
- (BOOL) createNewListWithTitle:(NSString *)paramTitle describtion:(NSString *)paramDesc c1Val:(NSString *)paramC1 c2Val:(NSString *)paramC2 c3Val:(NSString *)paramC3 c4Val:(NSString *)paramC4 font_nameVal:(NSString *)paramfont_name font_sizeVal:(NSString *)paramfont_size font_colorVal:(NSString *)paramfont_color
BOOL success = NO;
if ([paramTitle length] == 0)
NSLog(@"Title is mandatory.");
UIAlertView *alert1 = [[UIAlertView alloc] initWithTitle:@"List Not Created" message:@"Please Enter the Keyword, Choose Color" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert1 show];
return NO;
Upload *newList = [NSEntityDescription
insertNewObjectForEntityForName:@"Upload"
inManagedObjectContext:self.managedObjectContext];
if (newList == nil)
NSLog(@"Failed to create the new List");
return NO;
newList.name = paramTitle;
newList.desc =paramDesc;
newList.c1 =paramC1;
newList.c2 =paramC2;
newList.c3 =paramC3;
newList.c4 =paramC4;
newList.fontName=paramfont_name;
newList.fontSize=paramfont_size;
newList.fontColor=paramfont_color;
NSError *savingError = nil;
if ([self.managedObjectContext save:&savingError])
NSLog(@"New List was created");
return YES;
else
NSLog(@"Failed to save the new List, Error = %@", savingError);
return success;
不要忘记#import "Upload.h"
并使用viewDidLoad
方法:
id delegate = [[UIApplication sharedApplication] delegate];
self.managedObjectContext = [delegate managedObjectContext];
最后调用上面的Bool方法,保存核心数据值。
【讨论】:
但是有一个问题。我已经创建了一个项目,但我没有在其中使用核心数据。 (我在创建项目时没有检查核心数据列)怎么办? 查看链接并更改上传类变量名 没问题手动添加核心数据,选择你的项目名称->文件->新建->选择核心数据->选择数据模型,接下来创建核心数据 还有一件事,我在核心数据模型中创建了多少个属性?它应该等于json数组中的对象数吗? 根据您的项目需要多少对象,您将在代码中创建和编辑变量【参考方案2】:参考这个对你有帮助的网站。
http://www.appcoda.com/core-data-tutorial-update-delete/
【讨论】:
以上是关于在核心数据iOS中保存json数据的主要内容,如果未能解决你的问题,请参考以下文章