2012-01-26 68 views
2

我正在使用核心數據爲我的應用程序,我有一個模型保留,在那裏我有一個facebook_event_id,起初我作爲一個整數64,但問題是,這可能是短暫的,我希望它變成NSString (無論如何我都把它當作來自Facebook的JSON字符串)。核心數據如何將NSNumber更改爲NSString?

我已經做了,現在下面:

  • 編輯 - >添加模型版本和基於它在我的舊的一個
  • 重建我的子類
  • 加入這個字典與NSMigratePersistentStoresAutomaticallyOption和NSInferMappingModelAutomaticallyOption設置爲YES

當我測試它在整數16和64之間變化時,一切正常,但是當我嘗試從整數6 4和字符串它給了我一個錯誤:

Can't find or automatically infer mapping model for migration

所以我增加了一個新的映射模型,並在那裏我想解決它在ReservationRoReservation | facebook_event_id | $source.facebook_event_id

我認爲一個人應該做的事情與$source.facebook_event_id把它轉換但我不知道該寫些什麼才能讓它起作用。一個人不應該在那裏使用普通的Objective-C,而是一個NSExpression,但是在那裏它不會解釋如何將NSNumber轉換爲NSString。

回答

6

我想你想:

FUNCTION($source.facebook_event_id, "stringValue") 

其中將採取的NSNumber目前在facebook_event_id財產,併發送stringValue的消息吧。

+0

蘋果是否有關於這些遷移政策的文件?你能提供我哪裏可以閱讀使用這種功能($ source.X,「functionName」)? – Eddie

+0

@Eddie我不認爲他們有很好的文檔,但這些可能會讓你開始:https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmMappingOverview.html和http ://stackoverflow.com/a/14068104/1196205 –

1

如何:

NSString *convertedString = [NSNumber stringValue]; 
+0

我沒有任何代碼,$ source.facebook_event_id是在Xcode中創建的遷移模型中的NSEspression(它具有.xmappingmodel文件擴展),因此無法在其中使用Obj-C代碼。它看起來像這樣:http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreDataVersioning/Art/recipes1-2mapping.jpg – Jeena