2010-11-03 10 views

Respuesta

36

Si está pensando en la identificación de las claves principales, los datos centrales se encargarán de esto. En cada objeto hay una propiedad objectID a la que puede acceder para verla. Cuando crea un objeto desde el contexto del objeto gestionado, los datos centrales le asignan una identificación temporal. Cuando se comprometen los cambios desde el contexto del objeto gestionado, los datos centrales asignan una identificación permanente. No creo que sea una buena idea intentarlo manualmente.

Lea this stackoverflow thread para obtener más información.

+0

Cómo convertir objectId en NSNumber por lo que se puede almacenar en los datos fundamentales? –

0

Puede hacerlo así después

saveContext() 

Objetivo-c:

- (int)getAutoIncrement { 
    int number = 0; 
    NSURL *url = [[self objectID] URIRepresentation]; 
    NSString *urlString = url.absoluteString 
    NSString *pN = [[urlString componentsSeparatedByString:@"/"] lastObject]; 
    if ([pN containsString:"p"]){ 
     NSString *stringPart = [pN stringByReplacingOccurrencesOfString:@"p" withString:@""] 
     number = stringPart.intValue 
    } 
    url = nil; 
    urlString = nil; 
    pN = nil; 
    stringPart = nil; 
    return number; 
} 

Swift:

func getAutoIncremenet() -> Int64 { 
    let url = self.objectID.uriRepresentation() 
    let urlString = url.absoluteString 
    if let pN = urlString.components(separatedBy: "/").last { 
     let numberPart = pN.replacingOccurrences(of: "p", with: "") 
     if let number = Int64(numberPart) { 
      return number 
     } 
    } 
    return 0 
} 
0

utilicé esa manera con NSFetchedResultsController:

primera clasificación:

fetchRequest.sortDescriptors = [NSSortDescriptor(key: "id", ascending: false)] 

Luego, en complemento método de objeto:

// Minimum id value 
var recordID = 1 
if let lastRecordID = fetchedResultsController.fetchedObjects?.first?.id { 
    recordID = Int(lastRecordID) + 1 
} 

let newRecord = Record(context: persistentContainer.viewContext) 
newRecord.id = Int32(recordID) 
Cuestiones relacionadas