0

我正在尝试将 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]);

task 是一个 NSManagedObject 并且该代码已经过测试并且可以正常工作很长时间。

从我读过的所有内容来看,这应该有效。任何帮助将不胜感激。

杰森

4

1 回答 1

13

userInfo必须是有效的属性列表。请参阅什么是属性列表?. NSManagedObjectID不是属性列表中允许的任何类型。

尝试[[taskID URIRepresentation] absoluteString]用作您的userInfo. 您必须-[NSPersistentStoreCoordinator managedObjectIDForURIRepresentation:]稍后使用才能将其重新转换为NSManagedObjectID.

于 2011-10-27T18:27:54.660 回答