2016-04-26 6 views
0

このコードは動作しますたぶんXamarin NSMutableArrayのの中に挿入し<T>結果

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); 

他にもうまくいかない方法があります。何故ですか?

+0

http://stackoverflow.com/help/product-supportを使用することができます。 *私はこのエラーがあり、それはバグだと確信しています*。私は回避策を提供することができますし、これをバグトラッカーに追加するべきだと思います。 https://bugzilla.xamarin.com/ –

+0

できません、bugzillaは私にパスワード回復メールを送信しません。だから、私はそれがコミュニティにあると思う。回避策としては、まあ、NSMutableArrayを使わないでください。 Emil

答えて

1

私にバグのように見えます。私はバグトラッカーで何かを見つけることができません。

インデックスが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); 
     } 
    } 
} 

そして、あなたは、私は、これはタイプ3の問題だと思います

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

質問に他の方法の情報を追加しました – Emil

関連する問題