c# - 运行 ibtool : object cannot be nil (key: family) 时出现 Xamarin.IOS 异常

标签 c# iphone xcode xamarin xamarin.ios

我在尝试构建我的解决方案时遇到了一个奇怪的错误: 运行 ibtool 时出现异常:*** setObjectForKey: object cannot be nil (key: family)

我已经用谷歌搜索了,但没有这个问题的答案,只有问题...也许值得一提的是我使用 Visual Studio Community 2015,我在我的 Mac 上安装了最新的 Xcode,我有一个更新的 iPhone 5s连接到 Mac。我的 Mac 上的操作系统是 El Capitan (10.11.4)。

我认为这个问题主要来 self 的 Storyboard,起初我在尝试为两个 View 之间的按钮创建一个 segue 时遇到了这个错误。我删除了它,它像往常一样工作,现在我在这个项目中遇到了同样的错误,这不是由于 segue。

如果我排除我的 Storyboard,我可以毫无问题地构建解决方案,但我无法在我的 iPhone 上运行该应用程序,因为 Storyboard丢失了。

有人知道问题出在哪里吗?如有必要,这里是错误日志:

Severity    Code    Description Project File    Line    Source  Suppression State
Error       Exception while running ibtool: *** setObjectForKey: object cannot be nil (key: family)
Backtrace:
  0   __exceptionPreprocess (in CoreFoundation)
  1   objc_exception_throw (in libobjc.A.dylib)
  2   -[__NSDictionaryM setObject:forKey:] (in CoreFoundation)
  3  0x00000001181c6b41 (in IDEInterfaceBuilderCocoaTouchIntegration)
  4  0x000000011814ee00 (in IDEInterfaceBuilderCocoaTouchIntegration)
  5  0x000000011814d775 (in IDEInterfaceBuilderCocoaTouchIntegration)
  6  0x000000011815f133 (in IDEInterfaceBuilderCocoaTouchIntegration)
  7  0x000000011815eeac (in IDEInterfaceBuilderCocoaTouchIntegration)
  8  0x000000011815ec66 (in IDEInterfaceBuilderCocoaTouchIntegration)
  9  0x000000011815d934 (in IDEInterfaceBuilderCocoaTouchIntegration)
 10  0x00000001181cb205 (in IDEInterfaceBuilderCocoaTouchIntegration)
 11  0x00000001181ccce7 (in IDEInterfaceBuilderCocoaTouchIntegration)
 12   -[IBDocumentCompiler invokeWhileUsingSourceAsIntermediateDocument:] (in IDEInterfaceBuilderKit)
 13   -[IBDocumentCompiler invokeWithIntermediateDocumentOfTargetRuntime:alwaysCopy:block:] (in IDEInterfaceBuilderKit)
 14  0x00000001181cc40a (in IDEInterfaceBuilderCocoaTouchIntegration)
 15  0x00000001181b8b4d (in IDEInterfaceBuilderCocoaTouchIntegration)
 16   -[IBStoryboardSceneCompilationGroup compilationResultsForCompilationUnits:options:returningErrors:] (in IDEInterfaceBuilderKit)
 17   -[IBStoryboardDocumentCompiler compileUnitsFromCompilationGroups:filter:options:errors:] (in IDEInterfaceBuilderKit)
 18   __78-[IBStoryboardDocumentCompiler compileContentsOfStoryboardWithOptions:errors:]_block_invoke (in IDEInterfaceBuilderKit)
 19   IBWithAutoInvalidationPool (in IDEInterfaceBuilderKit)
 20   -[IBStoryboardDocumentCompiler compileContentsOfStoryboardWithOptions:errors:] (in IDEInterfaceBuilderKit)
 21   -[IBStoryboardDocumentCompiler internalCompileWithOptions:error:] (in IDEInterfaceBuilderKit)
 22  0x00000001181b8f5e (in IDEInterfaceBuilderCocoaTouchIntegration)
 23   __57-[IBStoryboardDocumentCompiler compileWithOptions:error:]_block_invoke (in IDEInterfaceBuilderKit)
 24   -[IBDocumentCompiler invokeWithIntermediateDocument:] (in IDEInterfaceBuilderKit)
 25   -[IBDocumentCompiler invokeWithIntermediateDocumentOfTargetRuntime:alwaysCopy:block:] (in IDEInterfaceBuilderKit)
 26   -[IBStoryboardDocumentCompiler compileWithOptions:error:] (in IDEInterfaceBuilderKit)
 27   +[IBDocumentCompiler compileContentsOfDocument:options:error:] (in IDEInterfaceBuilderKit)
 28   __47-[IBDocument compiledPackageWithOptions:error:]_block_invoke (in IDEInterfaceBuilderKit)
 29   -[IBDocumentAutolayoutManager ignoreAutolayoutStatusInvalidationDuring:] (in IDEInterfaceBuilderKit)
 30   -[IBDocument compiledPackageWithOptions:error:] (in IDEInterfaceBuilderKit)
 31   -[IBDocument compileAndWriteToPath:withOptions:error:] (in IDEInterfaceBuilderKit)
 32  0x000000010ceb52da (in ibtoold)
 33  0x000000010ceb10e7 (in ibtoold)
 34  0x000000010ceb36ab (in ibtoold)
 35  0x000000010ceb75c8 (in ibtoold)
 36  0x000000010ceb7c5a (in ibtoold)
 37  0x000000010ceb7b2d (in ibtoold)
 38  0x000000010cea695b (in ibtoold)
 39  0x000000010ceb71c3 (in ibtoold)
 40  0x000000010ceb6274 (in ibtoold)
 41   start (in libdyld.dylib)  FridgeMe.iOS            Build   

编辑:我删除了第二个 View Controller 并创建了一个全新的 View Controller ,这似乎解决了问题。仍然不确定是什么导致了问题,但如果有人知道,我真的很想知道这是否会再次发生。

编辑 2:当我在另一个(新的) View Controller 上添加一个按钮时,错误又回来了。它还指的是有关按钮没有隐藏代码的运行时错误(我认为这是在您在 Storyboard上添加按钮时创建的)。看图片。 Seems like the code for the button isn't generated properly.

我希望这对遇到此问题的其他人有所帮助。我仍然有点卡住,因为我试图手动将与按钮有关的所有内容(当然更改它的名称)从我的工作 View Controller 复制到新 View Controller ,但我似乎没有让它工作。

我已将以下内容添加到我的 ViewControllerCreate.designer.cs 中:

UIKit.UIButton BtnCreateAccount { get; set; }

void ReleaseDesignerOutlets()
{
    if (BtnCreateAccount != null)
    {
        BtnCreateAccount.Dispose();
        BtnCreateAccount = null;
    }
}

有什么想法吗?

最佳答案

我遇到了同样的错误。

在分析代码 main.storyboard 后,我发现,在我的例子中,如果按钮或其他控件具有类似以下内容,则错误跳转:

家族字体有问题,换成 或者直接删除 de 行。

问候, 马塞洛

关于c# - 运行 ibtool : object cannot be nil (key: family) 时出现 Xamarin.IOS 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39021336/

相关文章:

c# - Entity Framework 6 - .Create new object, save changes, re-query object based on new id, null 返回

iphone - 带有非关闭按钮的 UIActionSheet

iphone - 为什么我绘制 Core Graphics 三角形时它是倒转的?

objective-c - 关于如何在 cocos2d 中制作排行榜和成就的任何教程

ios - ViewController 中的多个 UICollectionViews |不会调用一个 CollectionViews 委托(delegate)方法

C# 通用接口(interface)

c# - SharePoint 2013 - 如何以编程方式设置搜索结果 url?

xcode - Clang 错误 : Reference to NSUTF8StringEncoding is ambiguous

c# - .NET : If my . NET 自动化 Office,客户是否必须安装 Office?

iphone - iPhone 原生音频格式