我正在尝试将NSManagedObjectID附加到UILocalNotification但仍然收到错误: 属性列表格式无效:200(属性列表不能包含'CFType'类型的对象)
这是我的代码(taskID是NSManagedObjectID):
// Create the new notification
UILocalNotification *newNotice = [[notificationClass alloc] init];
[newNotice setFireDate:date];
[newNotice setTimeZone:[NSTimeZone defaultTimeZone]];
[newNotice setAlertBody:@"Test text"];
// Add the object ID to the userinfo
NSDictionary *myUserInfo = [NSDictionary dictionaryWithObject:taskID forKey:@"TaskID"];
newNotice.userInfo = myUserInfo;
taskID通过此代码(第一个参数)传递给函数:
addNotification([task objectID], [task taskname], [task taskexpiry]);
任务是一个NSManagedObject,该代码已经过测试并且工作正常很长时间。
从我读过的所有内容中都应该有效。任何帮助将不胜感激。
杰森
答案 0 :(得分:13)
userInfo
必须是有效的属性列表。见What is a Property List?。 NSManagedObjectID
不是属性列表中允许的任何类型。
尝试使用[[taskID URIRepresentation] absoluteString]
作为userInfo
。您之后必须使用-[NSPersistentStoreCoordinator managedObjectIDForURIRepresentation:]
将其重新设置为NSManagedObjectID
。