保存到Today Extension中的特定核心数据对象

时间:2015-10-01 11:14:53

标签: swift core-data swift2

处理我的iOS项目的一部分,需要引用用户在主应用程序中选择的特定对象,该对象通过切换开关设置,该切换开关激活要在Today Extension中使用的指定对象以记录简单对象由今日扩展中的用户创建。我不确定如何专门做这件事。我想过使用NSUSerDefaults作为指定该对象的方法,但这对我来说都是全新的。有没有人在这之前走过这条路?有没有人知道在今日推广中引用你想要存储的特定对象的方法?

1 个答案:

答案 0 :(得分:0)

您可以使用function onBeforeLoad(type) { var entityId = nlapiGetFieldValue('entity'); if ((type != 'create') || !entityId) { return; } if(nlapiLookupField('customer', nlapiGetFieldValue('entity'), 'stage') === 'PROSPECT') { throw nlapiCreateError('INVALID_REQUEST', 'You cannot create a Sales Order from a Quote placed for a Prospect'); } } 属性(objectID的实例)保存对特定托管对象的引用,该属性可以转换为URI。然后可以将URI转换为NSManagedObjectID,您可以将其保存为用户默认值。

要保存引用,请将对象的ID作为URI:

NSData

然后转换为let objectIDURI = newManagedObject.objectID.URIRepresentation() 并保存:

NSData

要恢复该对象,请加载let objectIDURIData = NSKeyedArchiver.archivedDataWithRootObject(objectIDURI) NSUserDefaults.standardUserDefaults().setObject(objectIDURIData, forKey: "savedID") 并转换回NSData(以下内容已经过简化,您必须正确处理选项):

NSURL

然后将ID转换回let savedObjectIDURIData = NSUserDefaults.standardUserDefaults().objectForKey("savedID") as? NSData let savedObjectIDURI = NSKeyedUnarchiver.unarchiveObjectWithData(savedObjectIDURIData!) as? NSURL 并获取托管对象:

NSManagedObjectID

此时let savedObjectID = context.persistentStoreCoordinator?.managedObjectIDForURIRepresentation(savedObjectIDURI!) let savedObject = context.objectWithID(savedObjectID!) 是上面保存的托管对象。