gpt4 book ai didi

ios - 将 NSManagedObjectID 保存在 plist 文件中

转载 作者:行者123 更新时间:2023-11-29 13:10:56 28 4
gpt4 key购买 nike

我正在开发一个使用 CoreData 的应用程序。出于我的应用程序的目的,我想保存一个对象的 managedObjectId(在 plist 文件中),以便在下次应用程序启动时检索该对象。

经过一些研究,我尝试了:

myDictionary setObject:self.myPerson.objectID.URIRepresentation.absoluteString forKey:@"lastSelectedPerson"];
// Then I write the dictonary into a file
// I get a value like "x-coredata://8CF33004-BADD-402D-9AA5-115A030F901A/Person/p1"

myPerson 是一个保存在 managedObjectContext 中的对象。

接下来我尝试检索 objectID,但我使用这段代码得到了一个 nil 值:

// After retrieving the dictonary from the plist file
NSString * lastSelectedPersonId = [myDictionary objectForKey:@"lastSelectedPerson"];
NSManagedObjectID * objectID = [self.managedObjectContext.persistentStoreCoordinator managedObjectIDForURIRepresentation:[NSURL URLWithString:lastSelectedPersonId]];
self.myPerson = (Person *)[self.managedObjectContext existingObjectWithID:objectID error:&error];

你有什么建议吗?谢谢。

最佳答案

要在下次启动时恢复对象,您也可以尝试以下操作:

  1. 将 objectID 保存到 NSUserDefaults:

    [[NSUserDefaults standardUserDefaults] setObject:self.myPerson.objectID forKey:@"lastSelectedPerson"]; 
    [[NSUserDefaults standardUserDefaults] synchronize];
  2. 在下次启动时从 NSUserDefaults 获取值:

    NSNumber *lastSelectedPersonID = [[NSUserDefaults standardUserDefaults] objectForKey:@"lastSelectedPerson"];
  3. 查询核心数据存储以获取对象:

    - (Person *)personWithID:(NSNumber *)personID {

    Person *person = nil;

    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    request.entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
    request.predicate = [NSPredicate predicateWithFormat:@"objectID == %@", personID];

    NSError *error = nil;
    NSArray *persons = [self.managedObjectContext executeFetchRequest:request error:&error];

    person = [persons lastObject];

    return person;
    }

关于ios - 将 NSManagedObjectID 保存在 plist 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17394049/

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