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