提问人:GuybrushThreepwood 提问时间:11/23/2021 更新时间:11/24/2021 访问量:98
Xamarin iOS - 为什么我不能在 NSArray 上按索引迭代或提取?
Xamarin iOS - Why Can't I Iterate or Fetch by Index on an NSArray?
问:
我正在尝试在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中,我认为我能够做到这两件事。
谢谢!
答:
0赞
GuybrushThreepwood
11/24/2021
#1
对于将来遇到此问题的任何人,尽管无法在 NSArray 上编制索引,但可以使用以下 Xamarin 方法:
GetItem<type>(index)
例如
myArray.GetItem<NSObject>(0).
像魅力:)一样工作
评论
NSArray.ValueAt
foreach
for
NSArray.Count