//@synthesize name = _name;//當同時寫了getter和setter方法之後,這個就失效了
//屬性中,如果是給屬性賦值,是一定要用self.,如果是調用屬性,不要用self.,這樣效率會高一些(注:只有是lazyload的使用,才使用self.)
/**
* Entity:實體,其實就是sqlite表
Attribute:屬性,就是sqlite中的字段
Relationship:關係,就是sqlite中的表與表之間的關係
Fetch Properties:查詢屬性,就是SQL語句
.sqlite 數據庫
.sqlite-shm:數據庫日誌
.sqlite-wal:數據庫索引共享內存文件
*/
//@dynamic 動態的,與synthesize區別:dynamic是在運行(Runtime)時創建getter和setter方法,synthesize是在編譯的時候創建getter和setter方法<pre name="code" class="objc">
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//打印沙河總目錄
NSLog(@"%@", NSHomeDirectory());
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
<span style="background-color: rgb(102, 102, 204);">//調用方法</span>
//添加
[self addCat];
//查詢所有
[self allCats];
//查詢一個
[self oneCat];
return YES;
}
//coredata數據持久化的增刪改查<span style="background-color: rgb(102, 102, 204);">//增</span>
- (void)addCat
{
//找到實體Cat,(找表)
NSEntityDescription *catED = [NSEntityDescription entityForName:@"Cat" inManagedObjectContext:self.managedObjectContext];
Cat *cat = [[Cat alloc] initWithEntity:catED insertIntoManagedObjectContext:self.managedObjectContext];
cat.name = @"miaomiao";
cat.age = @4;
cat.breed = @"天貓";
//加到臨時數據庫,如果沒有錯誤,再添加到真實數據庫
//淺拷貝和深拷貝
Cat *acat = [Cat copy];//淺拷貝,只拷貝地址(指針)
acat = [cat mutableCopy];//深拷貝,拷貝指針和指針指向的內容
NSError *error = nil;
BOOL result = [self.managedObjectContext save:&error];
if (result) {
NSLog(@"添加成功");//若無錯誤,自動添加到真實數據庫
} else {
NSLog(@"%@", error);
}
}
<span style="background-color: rgb(102, 102, 204);">
//查詢所有的Cat</span>
- (void)allCats
{
//相當於sqlite語句
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Cat"];
NSError *error = nil;
//查詢並獲取結果
NSArray *catArr = [self.managedObjectContext executeFetchRequest:request error:&error];
if (error) {
NSLog(@"%@", error);
} else {
NSLog(@"查詢成功");
for (Cat *cat in catArr) {
NSLog(@"%@", cat);
}
}
}
<span style="background-color: rgb(153, 153, 255);">
//查詢一個</span>
- (void)oneCat
{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Cat"];
//添加一些條件(謂詞)
//單引號
request.predicate = [NSPredicate predicateWithFormat:@"name = 'mimi'"];
//request.predicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
//}];
NSError *error = nil;
NSArray *catArr = [self.managedObjectContext executeFetchRequest:request error:&error];
if (error) {
NSLog(@"%@", error);
} else {
NSLog(@"條件查詢成功");
for (Cat *cat in catArr) {
NSLog(@"%@", cat);
//先便利查詢到,再修改
[self update:cat];
NSLog(@"%@", cat);
//刪除
[self deleteCat:cat];
NSLog(@"/////////%@", catArr);
}
}
}
<span style="background-color: rgb(102, 102, 204);">//修改</span>
- (void)update:(Cat *)cat
{
cat.age = @10;
NSError *error = nil;
BOOL result = [self.managedObjectContext save:&error];
if (result) {
NSLog(@"修改成功");
} else {
NSLog(@"%@", error);
}
}
<span style="background-color: rgb(204, 102, 204);">//刪除</span>
- (void)deleteCat:(Cat *)cat
{
[self.managedObjectContext deleteObject:cat];
//保存
NSError *error = nil;
BOOL result = [self.managedObjectContext save:&error];
if (result) {
NSLog(@"刪除成功");
} else {
NSLog(@"%@", error);
}
}