Xamarin iOS - 为什么我不能在 NSArray 上按索引迭代或提取?

Xamarin iOS - Why Can't I Iterate or Fetch by Index on an NSArray?

提问人:GuybrushThreepwood 提问时间:11/23/2021 更新时间:11/24/2021 访问量:98

问:

我正在尝试在Xamarin中遍历NSArray,或者按索引获取项目,如下所示:

  try
    {  
        NSData value = (NSData)NSUserDefaults.StandardUserDefaults["accounts"];
        NSKeyedUnarchiver unarchiver = new NSKeyedUnarchiver(value);

        NSArray valuesDictionary = (NSArray)NSKeyedUnarchiver.UnarchiveObject(value);

        foreach (var x in valuesDictionary)
        {

        }


        if (valuesDictionary != null)
        {
            var accountList = new List<Account>();

            int numberOfOrgs = (int)valuesDictionary.Count;

            for (int x = 0; x < numberOfOrgs; x++)
            {
                var org = valuesDictionary[x];
            }
        }

但是,编译器会在迭代和索引时引发错误。

   foreach (var x in valuesDictionary)
    {

    }

“foreach 语句无法对'NSArray'类型的变量进行操作,因为'NSArray'不包含'GetEnumerator'的公共实例或扩展定义”的错误

var org = valuesDictionary[x];

错误显示“无法将索引应用于 NSArray 类型”。

谁能建议为什么会这样?在目标C中,我认为我能够做到这两件事。

谢谢!

iOS Objective-C Xamarin NSRachList

评论

0赞 SushiHangover 11/24/2021
要从 Xamarin 中的 NSArray 中检索对象,您可以使用该方法,至于使用 C# ,没有 C# 枚举器,您可以使用该属性的循环。NSArray是松散的类型,所以用户要小心:-)NSArray.ValueAtforeachforNSArray.Count
0赞 GuybrushThreepwood 11/24/2021
谢谢 - 对于未来的旅行者,我发现您可以在 NSArray 上使用 Xamarin getItem<NSObject>(0) 方法,该方法:)

答:

0赞 GuybrushThreepwood 11/24/2021 #1

对于将来遇到此问题的任何人,尽管无法在 NSArray 上编制索引,但可以使用以下 Xamarin 方法:

GetItem<type>(index)

例如

myArray.GetItem<NSObject>(0).

像魅力:)一样工作