Ios 在数据库Objective C中本地保存JSON响应
我有一个GET API请求的questioAnswer responseObject: {“7d2c591c-9056-405c-9509-03266842b7e5”=();“f884a7d1-f9d9-4563-bb6e-94538664f3bd”=测试;}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
如何根据特定的调查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数据库