gpt4 book ai didi

ios - 插入 Xamarin NSMutableArray 导致超出范围异常

转载 作者:行者123 更新时间:2023-11-29 01:02:17 25 4
gpt4 key购买 nike

此代码有效:

var arr = new NSMutableArray();
arr.Insert(new NSString("lol"), 0);

但这会导致System.IndexOutOfRangeException

var arr = new NSMutableArray<NSString>();
arr.Insert(new NSString("lol"), 0);

同样适用于 InsertObjects 方法:

var arr = new NSMutableArray<NSString>(); // Crash
//var arr = new NSMutableArray(); - No crash
var srcArr = new NSString[] { new NSString("one"), new NSString("two") };
var indexes = NSIndexSet.FromNSRange(new NSRange(0, 2));

arr.InsertObjects(srcArr, indexes);

也许还有一些其他方法不起作用。这是为什么?

最佳答案

在我看来像是一个错误。我在 bugtracker 上找不到任何东西。

如果索引等于 Count,解决方法是使用 Add。您可以将其打包到扩展方法中,例如:

public static class NSMutableArrayFix
{
public static void InsertFix<T>(this NSMutableArray<T> array, T obj, nint index)
where T : class, INativeObject
{
if(array.Count == (nuint)index)
{
array.Add(obj);
}
else
{
array.Insert(obj, index);
}
}
}

然后你就可以使用

var arr = new NSMutableArray<NSObject>();
arr.InsertFix(new NSString("lol"), 0);

关于ios - 插入 Xamarin NSMutableArray<T> 导致超出范围异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36869604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com