可能存在捆绑问题 - 无法使用空模型创建NSPersistentStoreCoordinator

4
我希望您能够帮助将Aviary SDK Objective-C库集成到Monotouch项目中。我使用“Monotouch绑定项目”模板来实现这一点。 我已经构建了DLL文件(感谢聪明的人!)该项目可以在模拟器上编译和运行。
但是,我无法显示主要的Aviary视图,并且以下代码:
            this.afPhotoEditor = new AFPhotoEditorController(UIImage.FromFile("Images/site.jpg"));
            AFDelegate afDelegate = new AFDelegate(this);
            this.afPhotoEditor.Delegate = afDelegate;
            this.PresentModalViewController(this.afPhotoEditor, true);

返回错误:

Unhandled Exception: MonoTouch.Foundation.MonoTouchException: Objective-C exception thrown.  Name: NSInvalidArgumentException Reason: Cannot create an NSPersistentStoreCoordinator with a nil model
  at (wrapper managed-to-native) MonoTouch.ObjCRuntime.Messaging:void_objc_msgSendSuper_IntPtr_bool (intptr,intptr,intptr,bool)
  at MonoTouch.UIKit.UIViewController.PresentModalViewController (MonoTouch.UIKit.UIViewController modalViewController, Boolean animated) [0x00038] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIViewController.g.cs:261 
  at TestAviary.FirstViewController.<ViewDidLoad>m__0 (System.Object , System.EventArgs ) [0x00028] in /Users/mahmood1/Projects/AviaryBinding/TestAviary/FirstViewController.cs:61 
  at MonoTouch.UIKit.UIControlEventProxy.Activated () [0x00000] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIControl.cs:30 
  at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr)
  at MonoTouch.UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x00042] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:29 
  at TestAviary.Application.Main (System.String[] args) [0x00000] in /Users/mahmood1/Projects/AviaryBinding/TestAviary/Main.cs:17 
[ERROR] FATAL UNHANDLED EXCEPTION: MonoTouch.Foundation.MonoTouchException: Objective-C exception thrown.  Name: NSInvalidArgumentException Reason: Cannot create an NSPersistentStoreCoordinator with a nil model
  at (wrapper managed-to-native) MonoTouch.ObjCRuntime.Messaging:void_objc_msgSendSuper_IntPtr_bool (intptr,intptr,intptr,bool)
  at MonoTouch.UIKit.UIViewController.PresentModalViewController (MonoTouch.UIKit.UIViewController modalViewController, Boolean animated) [0x00038] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIViewController.g.cs:261 
  at TestAviary.FirstViewController.<ViewDidLoad>m__0 (System.Object , System.EventArgs ) [0x00028] in /Users/mahmood1/Projects/AviaryBinding/TestAviary/FirstViewController.cs:61 
  at MonoTouch.UIKit.UIControlEventProxy.Activated () [0x00000] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIControl.cs:30 
  at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr)
  at MonoTouch.UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x00042] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:29 
  at TestAviary.Application.Main (System.String[] args) [0x00000] in /Users/mahmood1/Projects/AviaryBinding/TestAviary/Main.cs:17 

似乎这个错误(无法使用空的模型创建NSPersistentStoreCoordinator)与Aviary SDK需要添加的资源包有关。
Aviary iOS设置指南中得知:
4. Copy resources

Make sure AviarySDKResources.bundle is included in your target's "Copy Bundle Resources" build phase.

我通过MonoDevelop的“添加现有文件夹”菜单项添加了这个bundle。

源代码在这里 >>> http://www.axifile.com/en/71EC96914A

它包括两个项目:

  • AviaryBinding(MonoTouch绑定项目)
  • TestAviary

谢谢!


只是一个想法,你尝试打开捆绑包了吗(我认为它是“显示内容”,我现在在Windows上),并提取其中的所有资源?你可以将它们全部添加到MonoDevelop项目中。 - jonathanpeppers
谢谢建议。是的,捆绑包已经打开了,我可以从中获取所有文件。但是我尝试了很多组合 - 没有运气。我不知道什么原因导致了这个错误。也许 Aviary iOS 不能与 MonoTouch 集成。这可能吗?还是说 MonoTouch 可以绑定任何 ObjC 库? - Shturman
Shturman,你能和大家分享你现在(已经工作)的解决方案吗? - Paul Knopf
有人为新的3.0版本创建了绑定吗?考虑到新的应用商店规则,我们必须拥有它才能进入商店。 - Rick
1
在https://github.com/theonlylawislove/MonoTouch.Aviary找到了3.0绑定。谢谢! - Rick
1个回答

0
根据Jonathan.Peppers的评论:
将大多数文件以这种方式添加到Build Action为Content的项目中将解决此问题。

请查看我的绑定,以获取可行的解决方案。https://github.com/theonlylawislove/MonoTouch.Aviary - Paul Knopf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接