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' 的 public 实例或扩展定义”
和
var org = valuesDictionary[x];
错误“无法将索引应用于 NSArray 类型”。
谁能告诉我这是为什么?在 Objective C 我想我可以做到这两件事。
谢谢!
对于将来遇到此问题的任何人,虽然您不能在 NSArray 上建立索引,但您可以使用 Xamarin 方法:
GetItem<type>(index)
例如
myArray.GetItem<NSObject>(0).
很有魅力:)
我正在尝试在 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' 的 public 实例或扩展定义”
和
var org = valuesDictionary[x];
错误“无法将索引应用于 NSArray 类型”。
谁能告诉我这是为什么?在 Objective C 我想我可以做到这两件事。
谢谢!
对于将来遇到此问题的任何人,虽然您不能在 NSArray 上建立索引,但您可以使用 Xamarin 方法:
GetItem<type>(index)
例如
myArray.GetItem<NSObject>(0).
很有魅力:)