在核心数据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数据的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3 中的 JSON 图像和核心数据 [关闭]

在核心数据中保存动态生成的带有父->子关系的JSON数据?

将 JSON 保存到核心数据

ios/objective-c:保存核心数据时出错

iOS:从 JSON 更新核心数据数据库

在 iOS 中保存 JSON 对象