在UILocalNotification中设置UserInfo时出错

时间:2011-10-27 17:23:35

标签: objective-c uilocalnotification userinfo

我正在尝试将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,该代码已经过测试并且工作正常很长时间。

从我读过的所有内容中都应该有效。任何帮助将不胜感激。

杰森

1 个答案:

答案 0 :(得分:13)

userInfo必须是有效的属性列表。见What is a Property List?NSManagedObjectID不是属性列表中允许的任何类型。

尝试使用[[taskID URIRepresentation] absoluteString]作为userInfo。您之后必须使用-[NSPersistentStoreCoordinator managedObjectIDForURIRepresentation:]将其重新设置为NSManagedObjectID