这是针对将要介入此异常的所有人的信息:
Foundation.MonoTouchException:引发Objective-C异常。名称:NSInvalidArgumentException原因:***-[NSPlaceholderString initWithUTF8String:]:NULL cString
我在Web和我的代码中搜索了很多此错误。 但是所有“ NSInvalidArgumentException原因:”都更具体地表示为***。
此错误仅在我的案例中出现在IOS上。 Android运行良好。我主要在Android上部署以测试事物。因此,在提交服务器之后,我开始了IOS部署,但没有任何反应。
该错误来自启用了分组功能的ListView。 我正在使用通过ListItems给出的DueDate动态创建组。
我的ListView配置如下:
<ListView x:Name="AuditList"
ItemSelected="AuditList_ItemSelected"
HasUnevenRows="True"
IsGroupingEnabled="true"
GroupDisplayBinding="{Binding LongName}"
GroupShortNameBinding="{Binding ShortName}"
SeparatorVisibility="None">
众所周知,LongName的绑定就是标题。 ShortName仅适用于IOS,并负责右侧的Searchlist。
我正在做的是创建一个没有任何ShortName的GroupItem ...
private GroupedAuditViewItem GetGroup(DateTime date)
{
if (date == null)
return null;
string longName = CreateGroupName(date);
return new GroupedAuditViewItem() { LongName = longName };
}
在这种情况下,您将获得此异常。 但是如何预防呢?
您有多个路径。最简单的方法是删除ShortName绑定。
GroupShortNameBinding="{Binding ShortName}"
另一种是返回一个字符串。空的简称。在这种情况下,IOS将在右侧显示一个重叠的空白搜索栏。
return new GroupedAuditViewItem() { LongName = longName, ShortName = shortName };
当您具有良好的错误处理(例如简单的Try Catch
...
过去几天,我学到了很多东西,希望对那些遇到相同问题的人有所帮助:)
答案 0 :(得分:0)
正如我上面提到的,有多个路径可以摆脱此异常。
我决定删除.XAML文件中的GroupShortNameBinding="{Binding ShortName}"
。
优点是IOS应用程序中不会显示ShortNameList。