我想通过objectID作为关键字来查询CoreData中的数据,并将查到的数据作一些修改,代码是这样的:
``` let request = NSFetchRequest() let fetchedID = juzi.objectID.URIRepresentation()
request.entity = NSEntityDescription.entityForName("Juzi", inManagedObjectContext: appDelegate.managedObjectContext) let predicate = NSPredicate(format: "objectID == %i", fetchedID) request.predicate = predicate do { let jz = try appDelegate.managedObjectContext.executeFetchRequest(request) print(jz) } catch { print("没有查询到数据。") } ``` 保存数据时,出现这样的错误:
2015-10-29 17:20:20.543 Meiju[7078:287918] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath objectID not found in entity <NSSQLEntity Juzi id=1>'
我在Stackoverflow上找到这样的贴子,但没太明白是怎么回事。
http://stackoverflow.com/questions/29075910/how-can-i-get-core-data-entity-by-its-objectid
不知道自己在哪里出了问题,还请大家指导下。
感觉这个objectID用法有些奇怪,当然是相对我以前使用Djagno来说的。尽管这个objectID是自动生成的,却又不能直接当成一个字段来用。我在Github上看到的一些代码,也有在数据库字段中直接单设objectID的,而没有使用系统提供的。
ID需要自增涨,如果手动指定的话,明显不太科学,如果是自定义ID的话,如何实现这种自增涨呢?