coreData初步认识
根据这片文档可以自己初步建立一个coreData,进行简单的数据的增删改查。
1、新建工程,记得勾选Use Core Data
2、建立好以后可以看到xxx.xcdatamodeld,在这里可以添加实体和实体的属性。需要注意的是:实体名字必须以大写开头。
3、然后新建一个file,记得是NSManagedObject cubclass
4、勾选自己建立的工程
5、勾选建立的实体
6、next以后我们就可以看到建立好的实体是有4个文件,如图一
这里需要注意的是,xcode7以后建立的都是4个,而7以前的是两个,如图二
解释如下:So as you can see now all properties are in a separate file with category (CoreDataProperties). Later if you generate NSManagedObject subclass for the same model Xcode 7 will regenarete only 2 files with category (DBUser+CoreDataProperties.h and DBUser+CoreDataProperties.m) to update all properties from your model but it will not make any changes to 2 other files (DBUser.h and DBUser.m) so you can use these 2 files to add there some custom methods or properties etc.
In previous version Xcode generated always only 2 files (DBUser.h and DBUser.m) and it put properties there so you could not easily modify these files because your custom implementation was deleted everytime you regenerated your subclasses. Therefore it was a common practice to manually create a category and put your methods in your category which was oposite to what we can see in Xcode 7. That however had many disadvantages because we had to use a category for implementation of our methods which does not allow to do certain things and now we can easily modify the main interface and implementation files which allows us to do anything with it. Hurray!
图一
图二7、
8、增删改查(其实顺序应该是增、查、删或者改)
查询结果
删除后再进行查,查询结果:
改完后的结果:
至此,完成。
这里知识coredata的初步认识,具体的增删改查还需要和自己的项目结合。
网友评论
let batch = NSBatchUpdateRequest(entityName: entityName)
batch.propertiesToUpdate = ["age" : 18]
batch.predicate = NSPredicate(format: "age < %@", 18 as NSNumber)
batch.resultType = .UpdatedObjectsCountResultType
do{
let result = try managedObjectContext.executeRequest(batch)
if let theResult = result as? NSBatchUpdateResult{
if let numberOfAffectedPersons = theResult.result as? Int{
print("Number of people who were previously younger than " +
"18 years old and whose age is now set to " +
"18 is \(numberOfAffectedPersons)")
}
}
} catch let error as NSError{
print("Could not perform batch request. Error = \(error)")
}
如果我只想改name 里的某一部分: 比如把花花改成嘿嘿, 请问应该怎么写呢?
另外 NSPredicate的 predicateWithFormat 必须写成@"name=%@"这样吗?
谢谢楼主回复~
这里是对coredata里面的数据进行删除操作,NSPredicate是设置检索的条件,for in里面进行的是删除和保存的工作。不能理解为数组的增加和删除元素用这种方法。