Hola Estoy usando datos principales en mi aplicación y quiero establecer el atributo ID en cada entidad como autoincremento. ¿Es posible en los datos básicos? ¿O tengo que insertar manualmente la entrada y administrar el incremento programáticamente?¿Podemos definir el atributo de incremento automático en los datos centrales?
31
A
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
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
- 1. Cambiar el incremento de los campos de incremento automático por
- 2. Incremento automático en phpmyadmin
- 3. Obtenga el siguiente incremento automático
- 4. ID de incremento automático en la base de datos H2
- 5. Función de incremento automático en la base de datos
- 6. Android SQLite incremento automático
- 7. MySQL: Olvidé configurar el Incremento automático
- 8. Contadores de incremento automático almacenados en ConcurrentHashMap
- 9. Google App Engine - incremento automático
- 10. C# Class Incremento automático ID
- 11. ¿Cómo se define un número de incremento automático para la estructura LDAP?
- 12. Crear el atributo de incremento automático faltante con la migración de rieles
- 13. Incremento automático en Azure Table Storage
- 14. ¿Hay un incremento automático en sqlite?
- 15. Personalizar los accesores generados por datos centrales
- 16. ¿Sincroniza los datos centrales de IOS con el servicio web?
- 17. C#, marco de la entidad, incremento automático
- 18. ¿Podemos definir un IBOutlet privado?
- 19. C# Regex - Igualar y reemplazar, Incremento automático
- 20. LINQ to Objects incremento automático número
- 21. Generar un campo de incremento automático en rieles
- 22. Uso de un GUID y un entero de incremento automático
- 23. Incremento automático de la clave de la columna Cassandra
- 24. ¿Se puede confiar en la clave primaria de incremento automático en su base de datos?
- 25. Prácticas recomendadas de SQL: ¿puede confiar en el campo de incremento automático para ordenar filas cronológicamente?
- 26. ¿Cómo establecer el valor predeterminado para un atributo de datos centrales en xcode 4.0?
- 27. ¿Podemos actualizar los datos en la vista
- 28. Problema de almacenamiento de datos centrales: no se puede actualizar el atributo transformable (NSArray)
- 29. ¿Hay un incremento automático en la base de datos completa (no en cada tabla) en mySQL?
- 30. ¿Cómo podemos desactivar el brillo automático en Android?
Cómo convertir objectId en NSNumber por lo que se puede almacenar en los datos fundamentales? –