菜鸟教程小白 发表于 2022-12-12 09:50:36

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 &#39;CFType&#39;)
</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 = @&#34;Ga naar de Rekening Delen app&#34;;
localNotification.timeZone = ;
localNotification.applicationIconBadgeNumber = [ applicationIconBadgeNumber] + 1;

//set the dictionary here,
NSDictionary *billEventIdentifier = ;
localNotification.userInfo = billEventIdentifier;
NSLog(@&#34;set local notification&#34;);
[ 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]
查看完整版本: ios - 将 ManagedObjectID 存储在 NSDictionary 中