ios - 将 ManagedObjectID 存储在 NSDictionary 中
<p><p>我正在处理本地通知,为了识别每个通知,它需要从核心数据模型中获取一个 <code>NSDictionary</code>,其中 <code>ManagedObjectID</code> 作为该字典的键。 </p>
<p>问题是当我这样做时,我得到以下错误:</p>
<pre><code>Property list invalid for format: 200 (property list dictionaries may only have keys which are CFStrings, not 'CFType')
</code></pre>
<p>这与字典只能存储某些数据类型而不是 NSManagedObjectID 的事实有关。</p>
<p>所以我的问题是,有没有办法将此 <code>NSManagedObjectId</code> 转换为 <code>NSString</code> 或 <code>NSNumber</code> 例如。我真的需要那个特定的 id 以便以后识别它以删除那个特定的通知。</p>
<p>到目前为止的代码:</p>
<pre><code> -(void) scheduleNotificationAtDate:(NSDate*)date WithBody:(NSString*) body WithBillEventId:(NSManagedObjectID*) billEventId{
// Schedule the notification
UILocalNotification* localNotification = [ init];
localNotification.fireDate = date;
localNotification.alertBody = body;
localNotification.alertAction = @"Ga naar de Rekening Delen app";
localNotification.timeZone = ;
localNotification.applicationIconBadgeNumber = [ applicationIconBadgeNumber] + 1;
//set the dictionary here,
NSDictionary *billEventIdentifier = ;
localNotification.userInfo = billEventIdentifier;
NSLog(@"set local notification");
[ scheduleLocalNotification:localNotification];
}
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>您遇到的问题是,要使对象正确存储在字典中,然后序列化到磁盘,它们必须符合 NSCoding 而 NSManagedObjectID 不符合。</p>
<p>幸运的是,还有另一种方法。 NSManagedObjectID 上有一个名为 <code>URIRepresentation</code> 的方法,它将成为 Core Data 对象的标识符,您可以使用它来代替存储 NSManagedObjectID。然后,您可以将该 NSURL URIRepresentation 转换回 NSManagedObjectID,如下例所示:</p>
<pre><code>NSManagedObjectID *objectID = ;
</code></pre></p>
<p style="font-size: 20px;">关于ios - 将 ManagedObjectID 存储在 NSDictionary 中,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/23658030/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/23658030/
</a>
</p>
页:
[1]