热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ios之coredata

CoreData数据持久化是对SQLite的一个升级,它是ios集成的,在说CoreData之前,我们先说说在CoreData中使用的几个

Core Data数据持久化是对SQLite的一个升级,它是ios集成的,在说Core Data之前,我们先说说在CoreData中使用的几个类。

   (1)NSManagedObjectModel(被管理的对象模型)

           相当于实体,不过它包含 了实体间的关系

    (2)NSManagedObjectContext(被管理的对象上下文)

         操作实际内容

        作用:插入数据  查询  更新  删除

  (3)NSPersistentStoreCoordinator(持久化存储助理)

          相当于数据库的连接器

    (4)NSFetchRequest(获取数据的请求)    

        相当于查询语句

     (5)NSPredicate(相当于查询条件)

    (6)NSEntityDescription(实体结构)

    (7)后缀名为.xcdatamodel的包

        里面的.xcdatamodel文件,用数据模型编辑器编辑

       编译后为.momd或.mom文件,这就是为什么文件中没有这个东西,而我们的程序中用到这个东西而不会报错的原因

   首先我们要建立模型对象

   

  其次我们要生成模型对象的实体User,它是继承NSManagedObjectModel的

  

    点击之后你会发现它会自动的生成User,现在主要说一下,生成的User对象是这种形式的

 


这里解释一下dynamic  平常我们接触的是synthesize

 dynamic和synthesize有什么区别呢?它的setter和getter方法不能自已定义

 

打开CoreData的SQL语句输出开关

1.打开Product,点击EditScheme...
2.点击Arguments,在ArgumentsPassed On Launch中添加2项
1> -com.apple.CoreData.SQLDebug
2> 1

 

 

[plain] view plaincopyprint?
  1. #import   
  2. #import   
  3. @class ViewController;  
  4.   
  5. @interface AppDelegate : UIResponder   
  6.   
  7. @property (strong, nonatomic) UIWindow *window;  
  8.   
  9. @property (strong, nonatomic) ViewController *viewController;  
  10.   
  11. @property(strong,nonatomic,readonly)NSManagedObjectModel* managedObjectModel;  
  12.   
  13. @property(strong,nonatomic,readonly)NSManagedObjectContext* managedObjectContext;  
  14.   
  15. @property(strong,nonatomic,readonly)NSPersistentStoreCoordinator* persistentStoreCoordinator;  
  16. @end  

#import
#import
@class ViewController;@interface AppDelegate : UIResponder @property (strong, nonatomic) UIWindow *window;@property (strong, nonatomic) ViewController *viewController;@property(strong,nonatomic,readonly)NSManagedObjectModel* managedObjectModel;@property(strong,nonatomic,readonly)NSManagedObjectContext* managedObjectContext;@property(strong,nonatomic,readonly)NSPersistentStoreCoordinator* persistentStoreCoordinator;
@end

 

[plain] view plaincopyprint?
  1. #import "AppDelegate.h"  
  2.   
  3. #import "ViewController.h"  
  4.   
  5. @implementation AppDelegate  
  6. @synthesize managedObjectModel=_managedObjectModel;  
  7. @synthesize managedObjectContext=_managedObjectContext;  
  8. @synthesize persistentStoreCoordinator=_persistentStoreCoordinator;  
  9. - (void)dealloc  
  10. {  
  11.     [_window release];  
  12.     [_viewController release];  
  13.     [_managedObjectContext release];  
  14.     [_managedObjectModel release];  
  15.     [_persistentStoreCoordinator release];  
  16.     [super dealloc];  
  17. }  
  18.   
  19. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
  20. {  
  21.     self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];  
  22.     // Override point for customization after application launch.  
  23.     self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];  
  24.     self.window.rootViewController = self.viewController;  
  25.     [self.window makeKeyAndVisible];  
  26.     return YES;  
  27. }  
  28.   
  29. - (void)applicationWillResignActive:(UIApplication *)application  
  30. {  
  31.     // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.  
  32.     // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.  
  33. }  
  34.   
  35. - (void)applicationDidEnterBackground:(UIApplication *)application  
  36. {  
  37.     // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.   
  38.     // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.  
  39. }  
  40.   
  41. - (void)applicationWillEnterForeground:(UIApplication *)application  
  42. {  
  43.     // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.  
  44. }  
  45.   
  46. - (void)applicationDidBecomeActive:(UIApplication *)application  
  47. {  
  48.     // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.  
  49. }  
  50.   
  51. - (void)applicationWillTerminate:(UIApplication *)application  
  52. {  
  53.     // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.  
  54. }  
  55. //托管对象  
  56. -(NSManagedObjectModel *)managedObjectModel  
  57. {  
  58.     if (_managedObjectModel!=nil) {  
  59.         return _managedObjectModel;  
  60.     }  
  61. //    NSURL* modelURL=[[NSBundle mainBundle] URLForResource:@"CoreDataExample" withExtension:@"momd"];  
  62. //    _managedObjectModel=[[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];  
  63.     _managedObjectModel=[[NSManagedObjectModel mergedModelFromBundles:nil] retain];  
  64.     return _managedObjectModel;  
  65. }  
  66. //托管对象上下文  
  67. -(NSManagedObjectContext *)managedObjectContext  
  68. {  
  69.     if (_managedObjectContext!=nil) {  
  70.         return _managedObjectContext;  
  71.     }  
  72.       
  73.     NSPersistentStoreCoordinator* coordinator=[self persistentStoreCoordinator];  
  74.     if (coordinator!=nil) {  
  75.         _managedObjectContext=[[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];  
  76.           
  77.         [_managedObjectContext setPersistentStoreCoordinator:coordinator];  
  78.     }  
  79.     return _managedObjectContext;  
  80. }  
  81. //持久化存储协调器  
  82. -(NSPersistentStoreCoordinator *)persistentStoreCoordinator  
  83. {  
  84.     if (_persistentStoreCoordinator!=nil) {  
  85.         return _persistentStoreCoordinator;  
  86.     }  
  87. //    NSURL* storeURL=[[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"CoreaDataExample.CDBStore"];  
  88. //    NSFileManager* fileManager=[NSFileManager defaultManager];  
  89. //    if(![fileManager fileExistsAtPath:[storeURL path]])  
  90. //    {  
  91. //        NSURL* defaultStoreURL=[[NSBundle mainBundle] URLForResource:@"CoreDataExample" withExtension:@"CDBStore"];  
  92. //        if (defaultStoreURL) {  
  93. //            [fileManager copyItemAtURL:defaultStoreURL toURL:storeURL error:NULL];  
  94. //        }  
  95. //    }  
  96.     NSString* docs=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];  
  97.     NSURL* storeURL=[NSURL fileURLWithPath:[docs stringByAppendingPathComponent:@"CoreDataExample.sqlite"]];  
  98.     NSLog(@"path is %@",storeURL);  
  99.     NSError* error=nil;  
  100.     _persistentStoreCoordinator=[[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];  
  101.     if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {  
  102.         NSLog(@"Error: %@,%@",error,[error userInfo]);  
  103.     }  
  104.     return _persistentStoreCoordinator;  
  105. }  
  106. //-(NSURL *)applicationDocumentsDirectory  
  107. //{  
  108. //    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];  
  109. //}  
  110. @end  

#import "AppDelegate.h"#import "ViewController.h"@implementation AppDelegate
@synthesize managedObjectModel=_managedObjectModel;
@synthesize managedObjectContext=_managedObjectContext;
@synthesize persistentStoreCoordinator=_persistentStoreCoordinator;
- (void)dealloc
{[_window release];[_viewController release];[_managedObjectContext release];[_managedObjectModel release];[_persistentStoreCoordinator release];[super dealloc];
}- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];// Override point for customization after application launch.self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];self.window.rootViewController = self.viewController;[self.window makeKeyAndVisible];return YES;
}- (void)applicationWillResignActive:(UIApplication *)application
{// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
}- (void)applicationDidEnterBackground:(UIApplication *)application
{// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}- (void)applicationWillEnterForeground:(UIApplication *)application
{// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
}- (void)applicationDidBecomeActive:(UIApplication *)application
{// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}- (void)applicationWillTerminate:(UIApplication *)application
{// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
//托管对象
-(NSManagedObjectModel *)managedObjectModel
{if (_managedObjectModel!=nil) {return _managedObjectModel;}
// NSURL* modelURL=[[NSBundle mainBundle] URLForResource:@"CoreDataExample" withExtension:@"momd"];
// _managedObjectModel=[[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];_managedObjectModel=[[NSManagedObjectModel mergedModelFromBundles:nil] retain];return _managedObjectModel;
}
//托管对象上下文
-(NSManagedObjectContext *)managedObjectContext
{if (_managedObjectContext!=nil) {return _managedObjectContext;}NSPersistentStoreCoordinator* coordinator=[self persistentStoreCoordinator];if (coordinator!=nil) {_managedObjectContext=[[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];[_managedObjectContext setPersistentStoreCoordinator:coordinator];}return _managedObjectContext;
}
//持久化存储协调器
-(NSPersistentStoreCoordinator *)persistentStoreCoordinator
{if (_persistentStoreCoordinator!=nil) {return _persistentStoreCoordinator;}
// NSURL* storeURL=[[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"CoreaDataExample.CDBStore"];
// NSFileManager* fileManager=[NSFileManager defaultManager];
// if(![fileManager fileExistsAtPath:[storeURL path]])
// {
// NSURL* defaultStoreURL=[[NSBundle mainBundle] URLForResource:@"CoreDataExample" withExtension:@"CDBStore"];
// if (defaultStoreURL) {
// [fileManager copyItemAtURL:defaultStoreURL toURL:storeURL error:NULL];
// }
// }NSString* docs=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];NSURL* storeURL=[NSURL fileURLWithPath:[docs stringByAppendingPathComponent:@"CoreDataExample.sqlite"]];NSLog(@"path is %@",storeURL);NSError* error=nil;_persistentStoreCoordinator=[[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {NSLog(@"Error: %@,%@",error,[error userInfo]);}return _persistentStoreCoordinator;
}
//-(NSURL *)applicationDocumentsDirectory
//{
// return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
//}
@end

 

[plain] view plaincopyprint?
  1. #import   
  2. #import "AppDelegate.h"  
  3. @interface ViewController : UIViewController  
  4. @property (retain, nonatomic) IBOutlet UITextField *nameText;  
  5. @property (retain, nonatomic) IBOutlet UITextField *ageText;  
  6. @property (retain, nonatomic) IBOutlet UITextField *sexText;  
  7. @property(nonatomic,retain)AppDelegate* myAppDelegate;  
  8. - (IBAction)addIntoDataSource:(id)sender;  
  9. - (IBAction)query:(id)sender;  
  10. - (IBAction)update:(id)sender;  
  11. - (IBAction)del:(id)sender;  

#import
#import "AppDelegate.h"
@interface ViewController : UIViewController
@property (retain, nonatomic) IBOutlet UITextField *nameText;
@property (retain, nonatomic) IBOutlet UITextField *ageText;
@property (retain, nonatomic) IBOutlet UITextField *sexText;
@property(nonatomic,retain)AppDelegate* myAppDelegate;
- (IBAction)addIntoDataSource:(id)sender;
- (IBAction)query:(id)sender;
- (IBAction)update:(id)sender;
- (IBAction)del:(id)sender;

 

[plain] view plaincopyprint?
  1. #import "ViewController.h"  
  2. #import "User.h"  
  3. @interface ViewController ()  
  4.   
  5. @end  
  6.   
  7. @implementation ViewController  
  8.   
  9. - (void)viewDidLoad  
  10. {  
  11.     [super viewDidLoad];  
  12.     // Do any additional setup after loading the view, typically from a nib.  
  13.     _myAppDelegate=(AppDelegate *)[[UIApplication sharedApplication] delegate];  
  14. }  
  15.   
  16. - (void)didReceiveMemoryWarning  
  17. {  
  18.     [super didReceiveMemoryWarning];  
  19.     // Dispose of any resources that can be recreated.  
  20. }  
  21.   
  22. - (void)dealloc {  
  23.     [_nameText release];  
  24.     [_ageText release];  
  25.     [_sexText release];  
  26.     [super dealloc];  
  27. }  
  28. //插入数据  
  29. - (IBAction)addIntoDataSource:(id)sender {  
  30.     User* user=(User *)[NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext:self.myAppDelegate.managedObjectContext];  
  31.     [user setName:_nameText.text];  
  32.     [user setAge:[NSNumber numberWithInteger:[_ageText.text integerValue]]];  
  33.     [user setSex:_sexText.text];  
  34.     NSError* error;  
  35.     BOOL isSaveSuccess=[_myAppDelegate.managedObjectContext save:&error];  
  36.     if (!isSaveSuccess) {  
  37.         NSLog(@"Error:%@",error);  
  38.     }else{  
  39.         NSLog(@"Save successful!");  
  40.     }  
  41.       
  42. }  
  43. //查询  
  44. - (IBAction)query:(id)sender {  
  45.     NSFetchRequest* request=[[NSFetchRequest alloc] init];  
  46.     NSEntityDescription* user=[NSEntityDescription entityForName:@"User" inManagedObjectContext:_myAppDelegate.managedObjectContext];  
  47.     [request setEntity:user];  
  48. //    NSSortDescriptor* sortDescriptor=[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];  
  49. //    NSArray* sortDescriptions=[[NSArray alloc] initWithObjects:sortDescriptor, nil];  
  50. //    [request setSortDescriptors:sortDescriptions];  
  51. //    [sortDescriptions release];  
  52. //    [sortDescriptor release];  
  53.     NSError* error=nil;  
  54.     NSMutableArray* mutableFetchResult=[[_myAppDelegate.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];  
  55.     if (mutableFetchResult==nil) {  
  56.         NSLog(@"Error:%@",error);  
  57.     }  
  58.     NSLog(@"The count of entry: %i",[mutableFetchResult count]);  
  59.     for (User* user in mutableFetchResult) {  
  60.         NSLog(@"name:%@----age:%@------sex:%@",user.name,user.age,user.sex);  
  61.     }  
  62.     [mutableFetchResult release];  
  63.     [request release];  
  64. }  
  65. //更新  
  66. - (IBAction)update:(id)sender {  
  67.     NSFetchRequest* request=[[NSFetchRequest alloc] init];  
  68.     NSEntityDescription* user=[NSEntityDescription entityForName:@"User" inManagedObjectContext:_myAppDelegate.managedObjectContext];  
  69.     [request setEntity:user];  
  70.     //查询条件  
  71.     NSPredicate* predicate=[NSPredicate predicateWithFormat:@"name==%@",@"chen"];  
  72.     [request setPredicate:predicate];  
  73.     NSError* error=nil;  
  74.     NSMutableArray* mutableFetchResult=[[_myAppDelegate.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];  
  75.     if (mutableFetchResult==nil) {  
  76.         NSLog(@"Error:%@",error);  
  77.     }  
  78.     NSLog(@"The count of entry: %i",[mutableFetchResult count]);  
  79.     //更新age后要进行保存,否则没更新  
  80.     for (User* user in mutableFetchResult) {  
  81.         [user setAge:[NSNumber numberWithInt:12]];  
  82.           
  83.     }  
  84.     [_myAppDelegate.managedObjectContext save:&error];  
  85.     [mutableFetchResult release];  
  86.     [request release];  
  87.       
  88. }  
  89. //删除  
  90. - (IBAction)del:(id)sender {  
  91.     NSFetchRequest* request=[[NSFetchRequest alloc] init];  
  92.     NSEntityDescription* user=[NSEntityDescription entityForName:@"User" inManagedObjectContext:_myAppDelegate.managedObjectContext];  
  93.     [request setEntity:user];  
  94.     NSPredicate* predicate=[NSPredicate predicateWithFormat:@"name==%@",@"chen"];  
  95.     [request setPredicate:predicate];  
  96.     NSError* error=nil;  
  97.     NSMutableArray* mutableFetchResult=[[_myAppDelegate.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];  
  98.     if (mutableFetchResult==nil) {  
  99.         NSLog(@"Error:%@",error);  
  100.     }  
  101.     NSLog(@"The count of entry: %i",[mutableFetchResult count]);  
  102.     for (User* user in mutableFetchResult) {  
  103.         [_myAppDelegate.managedObjectContext deleteObject:user];  
  104.     }  
  105.       
  106.     if ([_myAppDelegate.managedObjectContext save:&error]) {  
  107.         NSLog(@"Error:%@,%@",error,[error userInfo]);  
  108.     }  
  109. }  
  110. @end  

#import "ViewController.h"
#import "User.h"
@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad
{[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib._myAppDelegate=(AppDelegate *)[[UIApplication sharedApplication] delegate];
}- (void)didReceiveMemoryWarning
{[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}- (void)dealloc {[_nameText release];[_ageText release];[_sexText release];[super dealloc];
}
//插入数据
- (IBAction)addIntoDataSource:(id)sender {User* user=(User *)[NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext:self.myAppDelegate.managedObjectContext];[user setName:_nameText.text];[user setAge:[NSNumber numberWithInteger:[_ageText.text integerValue]]];[user setSex:_sexText.text];NSError* error;BOOL isSaveSuccess=[_myAppDelegate.managedObjectContext save:&error];if (!isSaveSuccess) {NSLog(@"Error:%@",error);}else{NSLog(@"Save successful!");}}
//查询
- (IBAction)query:(id)sender {NSFetchRequest* request=[[NSFetchRequest alloc] init];NSEntityDescription* user=[NSEntityDescription entityForName:@"User" inManagedObjectContext:_myAppDelegate.managedObjectContext];[request setEntity:user];
// NSSortDescriptor* sortDescriptor=[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
// NSArray* sortDescriptions=[[NSArray alloc] initWithObjects:sortDescriptor, nil];
// [request setSortDescriptors:sortDescriptions];
// [sortDescriptions release];
// [sortDescriptor release];NSError* error=nil;NSMutableArray* mutableFetchResult=[[_myAppDelegate.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];if (mutableFetchResult==nil) {NSLog(@"Error:%@",error);}NSLog(@"The count of entry: %i",[mutableFetchResult count]);for (User* user in mutableFetchResult) {NSLog(@"name:%@----age:%@------sex:%@",user.name,user.age,user.sex);}[mutableFetchResult release];[request release];
}
//更新
- (IBAction)update:(id)sender {NSFetchRequest* request=[[NSFetchRequest alloc] init];NSEntityDescription* user=[NSEntityDescription entityForName:@"User" inManagedObjectContext:_myAppDelegate.managedObjectContext];[request setEntity:user];//查询条件NSPredicate* predicate=[NSPredicate predicateWithFormat:@"name==%@",@"chen"];[request setPredicate:predicate];NSError* error=nil;NSMutableArray* mutableFetchResult=[[_myAppDelegate.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];if (mutableFetchResult==nil) {NSLog(@"Error:%@",error);}NSLog(@"The count of entry: %i",[mutableFetchResult count]);//更新age后要进行保存,否则没更新for (User* user in mutableFetchResult) {[user setAge:[NSNumber numberWithInt:12]];}[_myAppDelegate.managedObjectContext save:&error];[mutableFetchResult release];[request release];}
//删除
- (IBAction)del:(id)sender {NSFetchRequest* request=[[NSFetchRequest alloc] init];NSEntityDescription* user=[NSEntityDescription entityForName:@"User" inManagedObjectContext:_myAppDelegate.managedObjectContext];[request setEntity:user];NSPredicate* predicate=[NSPredicate predicateWithFormat:@"name==%@",@"chen"];[request setPredicate:predicate];NSError* error=nil;NSMutableArray* mutableFetchResult=[[_myAppDelegate.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];if (mutableFetchResult==nil) {NSLog(@"Error:%@",error);}NSLog(@"The count of entry: %i",[mutableFetchResult count]);for (User* user in mutableFetchResult) {[_myAppDelegate.managedObjectContext deleteObject:user];}if ([_myAppDelegate.managedObjectContext save:&error]) {NSLog(@"Error:%@,%@",error,[error userInfo]);}
}
@end


对于多线程它是不安全的,需要进行特殊处理下次再说吧

转:https://www.cnblogs.com/yulang314/p/3566891.html



推荐阅读
  • 转载网址:http:www.open-open.comlibviewopen1326597582452.html参考资料:http:www.cocos2d-ip ... [详细]
  • Flutter入门指南:实现自动关闭的对话框与提示
    本文为Flutter系列教程的一部分,专注于讲解如何在Flutter应用中实现自动关闭的对话框和提示。通过具体的代码示例,帮助开发者掌握SnackBar、BottomSheet和Dialog的使用方法。 ... [详细]
  • 本文档详细介绍了服务器与应用系统迁移的策略与实施步骤。迁移不仅涉及数据的转移,还包括环境配置、应用兼容性测试等多个方面,旨在确保迁移过程的顺利进行及迁移后的系统稳定运行。 ... [详细]
  • 本文通过一个实际案例,详细介绍了如何使用Excel VBA和FSO(FileSystemObject)对象来提取指定文件夹中的所有文件名称,并将其以超链接的形式添加到Excel表格中。 ... [详细]
  • 本文介绍如何使用 jQuery 的 AJAX 方法从服务器获取 JSON 数据,并通过遍历这些数据来创建包含公司及其产品信息的数组。 ... [详细]
  • 学习目的:1.了解android线程的使用2.了解主线程与子线程区别3.解析异步处理机制主线程与子线程:所谓主线程,在Windows窗体应用程序中一般指UI线程,这个是程序启动的时 ... [详细]
  • 使用Python轻松合并大量复杂Excel文件
    当面对大量的Excel文件时,如何高效地将它们合并成一个文件成为了一项挑战。本文将指导初学者如何利用Python的几个库,在几十行代码内完成这一任务。 ... [详细]
  • 本文深入探讨了企业级开发框架NHibernate和Spring.NET的关键特性之一——面向方面编程(AOP)。文章不仅介绍了AOP的基本概念及其如何增强面向对象编程(OOP),还详细说明了Spring.NET中AOP的具体应用,包括事务管理和自定义方面的实现。 ... [详细]
  • 本文通过SystemTap工具详细分析了lvextend命令在SUSE12sp3系统上的执行流程。首先介绍了必要的软件安装步骤,随后展示了如何编写并运行SystemTap脚本来追踪命令执行过程中的函数调用,最后结合实际输出结果对关键函数进行了深入分析。 ... [详细]
  • 今天我在操作Git时遇到了一个问题,即我的仓库进入了分离的HEAD状态,这与之前讨论过的‘即使本地有更改,git push仍显示所有内容最新’的问题类似。 ... [详细]
  • 手把手教你构建简易JSON解析器
    本文将带你深入了解JSON解析器的构建过程,通过实践掌握JSON解析的基本原理。适合所有对数据解析感兴趣的开发者。 ... [详细]
  • 使用 NDB 提升 Node.js 应用调试体验
    本文介绍了由 Google Chrome 实验室推出的新一代 Node.js 调试工具 NDB,旨在为开发者提供更加高效和便捷的调试解决方案。 ... [详细]
  • 一个产品数组拼图|集合 2 (O(1)空间) ... [详细]
  • 本文详细介绍了Java中`org.sakaiproject.site.api.Site.addPage()`方法的功能和使用方法,并提供了多个实际项目中的代码示例。 ... [详细]
  • 解决CSS因MIME类型不匹配导致的加载失败问题
    本文详细介绍了在Web开发过程中,遇到CSS文件因MIME类型不匹配而无法正确加载的问题及其解决方案,适合前端开发者阅读。 ... [详细]
author-avatar
浮云
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有