gpt4 book ai didi

objective-c - 如何在 Xcode 8 中使用 CoreData?

转载 作者:搜寻专家 更新时间:2023-10-30 22:22:16 26 4
gpt4 key购买 nike

我正在尝试使用 CoreData,但是当我将它添加到我的项目时,我只获得了两个新方法:

- (NSPersistentContainer *)persistentContainer

- (void)saveContext

现在我无法使用旧方法来处理 CoreData,而且我找不到任何有关这些新方法和 Objective-C 的教程。我如何在带有 Objective-c 的 Xcode 8 中使用 persistentContainerCoreData 保存和获取数据?

最佳答案

您可以获取上下文为-

let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

或者在 Objective-C 中

NSManagedObjectContext *context = ((AppDelegate*)[[UIApplication sharedApplication] delegate]).persistentContainer.viewContext;

然后获取数据,比如 -

var resultArray  = try self.context.fetch(EntityName.fetchRequest())

或者在 Objective-C 中

NSFetchRequest<EntityName *> *fetchRequest = [EntityName fetchRequest];
NSError *error ;
NSArray *resultArray= [context executeFetchRequest:fetchRequest error:&error];

并且通过排序获取数据 -

var resultArray = [EntityName]()
do {
let request : NSFetchRequest<EntityName> = EntityName.fetchRequest()
let sortDescriptor = NSSortDescriptor(key: "somekey", ascending: true)
let sortDescriptors = [sortDescriptor]
request.sortDescriptors = sortDescriptors
resultArray = try self.context.fetch(request)
} catch {
print("Error")
}

或者在 Objective-C 中

NSFetchRequest<EntityName *> *fetchRequest = [EntityName fetchRequest];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"someKey" ascending:YES];
fetchRequest.sortDescriptors = @[sortDescriptor];
NSError *error ;
NSArray *resultArray= [context executeFetchRequest:fetchRequest error:&error];

然后添加数据,比如 -

let entityNameObj = EntityName(context: context)
entityNameObj.title = "title"

或者在 Objective-C 中

NSManagedObject *entityNameObj = [NSEntityDescription insertNewObjectForEntityForName:@"EntityName" inManagedObjectContext:context];
[entityNameObj setValue:@"someValue" forKey:@"someKey"];

然后保存上下文,例如 -

do {
try self.context.save()
} catch _ as NSError {
print("Error")
}

或者在 Objective-C 中

[((AppDelegate*)[[UIApplication sharedApplication] delegate]) saveContext];

关于objective-c - 如何在 Xcode 8 中使用 CoreData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41040253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com