0

CoreData ObjectId を使用して一意のレコードを保存しようとしています。この形式で ObjectID を取得できる場合があります

<x-coredata://FC004E6F-F3D6-420E-871E-3E281571FB8B/Register/p4>

これにより、ID、つまり4を取得できます。ただし、この形式のObjectIdで返される場合があります

<x-coredata:///Playlist/tC481615F-4ABA-4CDA-B703-D1E6303B455D3>

つまり、非常に苛立たしい NSTemporaryObjectID_Default です。IOS シミュレーターからプロジェクトをクリーンアップし、Xcode をクリーンアップしましたが、完全に機能していません。

これは、オブジェクト ID を取得するための私のコードです。

-(IBAction)TestButton:(id)sender
{
    appObject=(AppDelegate*)[[UIApplication sharedApplication]delegate];
    NSManagedObjectContext *context =[appObject managedObjectContext];
    NSManagedObject *playlistContact;
    NSManagedObjectID *moID = [playlistContact objectID];
    NSString *aString = [[moID URIRepresentation] absoluteString];
    NSArray *theComponents = [aString componentsSeparatedByString:@"/p"];
    NSInteger theZpk = [[theComponents lastObject] intValue];
    playlistId=[NSString stringWithFormat:@"%ld",(long)theZpk];
}

私を助けてください。

4

2 に答える 2

1

使用するにobjectIDは:

-(NSManagedObject *)existingObjectWithID:(NSManagedObjectID *)objectID
                               error:(NSError **)error

永続的なobjectID使用を取得するobtainPermanentIDsForObjectsには、たとえば次のようにします。

NSManagedObject *contact = [NSEntityDescription insertNewObjectForEntityForName:self.entityName inManagedObjectContext:context];
NSError *error = nil;
if (![context obtainPermanentIDsForObjects:
      @[contact] error:&error]) {
    NSLog(@"Couldn't obtain a permanent ID for object %@",
          error);
}
于 2014-09-12T07:47:52.730 に答える