Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在数据库Objective C中本地保存JSON响应_Ios_Objective C_Json_Core Data_Nsdictionary - Fatal编程技术网

Ios 在数据库Objective C中本地保存JSON响应

Ios 在数据库Objective C中本地保存JSON响应,ios,objective-c,json,core-data,nsdictionary,Ios,Objective C,Json,Core Data,Nsdictionary,我有一个GET API请求的questioAnswer responseObject: {“7d2c591c-9056-405c-9509-03266842b7e5”=();“f884a7d1-f9d9-4563-bb6e-94538664f3bd”=测试;} 如何根据特定的调查uuid将其本地保存在数据库中?您可以在会话中保存它 设置: NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; [userDef

我有一个GET API请求的questioAnswer responseObject:

{“7d2c591c-9056-405c-9509-03266842b7e5”=();“f884a7d1-f9d9-4563-bb6e-94538664f3bd”=测试;}


如何根据特定的调查uuid将其本地保存在数据库中?

您可以在会话中保存它

设置:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

[userDefaults setObject:value 
                 forKey:key];
[userDefaults synchronize];
获取:

[[NSUserDefaults standardUserDefaults] objectForKey:key];
编辑

import CoreData
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
 appDelegate.managedObjectContext
仅阐述将核心数据添加到以前没有的项目中实际需要执行的所有步骤:

步骤1:添加框架

单击你的应用程序目标(在左窗格顶部的图标上显示你的应用程序名称),然后转到“构建阶段”选项卡,然后在“链接二进制文件与库”上,单击底部的小“+”,然后找到“CoreData.framework”并将其添加到你的项目中

然后,使用以下方法在所有需要的对象上导入coredata(非性感方式):

Swift

import CoreData
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
 appDelegate.managedObjectContext
目标C

#import <CoreData/CoreData.h>
 [[[UIApplication sharedApplication] delegate] managedObjectContext];
在目标C中,确保将这些对象添加到AppDelegate.h

 @property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
 @property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
 @property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator;

 - (NSURL *)applicationDocumentsDirectory; // nice to have to reference files for core data
合成AppDelegate.m中以前的对象,如下所示:

#ifdef __OBJC__
    #import <UIKit/UIKit.h>
    #import <Foundation/Foundation.h>
    #import <CoreData/CoreData.h>
#endif
@synthesize managedObjectContext = _managedObjectContext;
@synthesize managedObjectModel = _managedObjectModel;
@synthesize persistentStoreCoordinator = _persistentStoreCoordinator;
然后将这些方法添加到AppDelegate.m(确保将您添加的模型的名称放在显示的点中):

步骤4:将数据对象放到需要数据的ViewController中

选项1。从VC使用应用程序代理的ManagedObjectContext(首选且更简单)

正如@brass kazoo所建议的那样-通过以下方式检索对AppDelegate及其managedObjectContext的引用:

Swift

import CoreData
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
 appDelegate.managedObjectContext
目标C

#import <CoreData/CoreData.h>
 [[[UIApplication sharedApplication] delegate] managedObjectContext];
选项2。在VC中创建ManagedObjectContext,并使其与AppDelegate(原始)中的AppDelegate匹配。

仅显示目标C的旧版本,因为首选方法更易于使用

在ViewController.h中

@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
@interface ViewController : UIViewController <NSFetchedResultsControllerDelegate> {
  NSFetchedResultsController *fetchedResultsController;
  NSManagedObjectContext *managedObjectContext;
}

 @property (nonatomic, retain) NSFetchedResultsController *fetchedResultsController;
在ViewController.m中

@synthesize managedObjectContext = _managedObjectContext;
@synthesize fetchedResultsController, managedObjectContext;
在创建ViewController的AppDelegate或类中,将managedObjectContext设置为与AppDelegate相同

ViewController.managedObjectContext = self.managedObjectContext;
如果希望使用核心数据的viewcontroller成为FetchedResultsController,则需要确保这些内容位于viewcontroller.h中

@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
@interface ViewController : UIViewController <NSFetchedResultsControllerDelegate> {
  NSFetchedResultsController *fetchedResultsController;
  NSManagedObjectContext *managedObjectContext;
}

 @property (nonatomic, retain) NSFetchedResultsController *fetchedResultsController;

在完成所有这些之后,您现在可以使用这个managedObjectContext来运行CoreData所需的所有常规fetchRequests!享受

如果您想在coredata中存储数据(离线使用),那么只需创建一个实体并将元组插入实体即可

只需遵循以下核心数据教程链接:

如果还可以使用UserDefaults存储特定数据


希望对你们有所帮助

谢谢大家!但我尝试使用FMDB创建数据库(因为它已经集成),它正确地创建了新的答案表,但是我在保存上面的字典时遇到了问题,因为它具有动态键值配对

这是一个很好的解决方案,只要你没有太多。如果有成百上千个这样的数据,你需要考虑其他方法来保存数据,比如:核心数据、领域或FielBASE。然后您必须集成coredata或realm数据库