Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用核心数据迭代检索到的对象?_Ios_Objective C - Fatal编程技术网

Ios 如何使用核心数据迭代检索到的对象?

Ios 如何使用核心数据迭代检索到的对象?,ios,objective-c,Ios,Objective C,我正在使用核心数据,并尝试遍历正在检索的对象。我在Xcode中遇到一个错误 // Fetching Records and saving it in "fetchedRecordsArray" object self.fetchedRecordsArray = [appDelegate getAllPhoneBookRecords]; //print array NSLog(@"Count: %lu", (unsigned long)self.fetchedRecordsArray.count

我正在使用核心数据,并尝试遍历正在检索的对象。我在Xcode中遇到一个错误

// Fetching Records and saving it in "fetchedRecordsArray" object
self.fetchedRecordsArray = [appDelegate getAllPhoneBookRecords];

//print array
NSLog(@"Count: %lu", (unsigned long)self.fetchedRecordsArray.count);

for (id object in self.fetchedRecordsArray) {
    NSLog(@"%@", object.city);
}
Count返回6,因此我知道其中有对象。我也知道“城市”是我实体中的一个属性。我得到的错误是:

Property ‘city’ not found on object of type ‘const _strong id’

有没有关于如何修复此问题并正确记录返回内容的建议?

与其在对象上迭代,不如在实体上迭代

for(<your entity class> obj in self.fetchedRecordsArray){
   //do stuff
}
for(self.fetchedRecordsArray中的对象){
//做事
}
或者,如果获取的记录包含多种类型的实体

for(id obj in self.fetchedRecordsArray){
    if([obj isKindOfClass:<you entity class>.class]){
    //do stuff
    }
    else if([obj isKindOfClass:<you other entity class>.class]){
     //do other stuff
    }
}
for(self.fetchedRecordsArray中的id对象){
if([obj是类的种类:.class]){
//做事
}
else if([obj是类的kindof:.class]){
//做其他事情
}
}
尝试更改此设置

            for (id object in self.fetchedRecordsArray) {
                NSLog(@"%@", object.city);
            }

            to 

            for (objectClassName *object in self.fetchedRecordsArray) {
                NSLog(@"%@", object.city);
            }

注意:*对象不是对象-for循环中的对象

尝试在对象中进行迭代,您还可以检查对象的实体,其中对象是对象的数组

for (NSManagedObject *obj in Objects)
{

        if ([[obj entity].name isEqualToString:@"EntityName1"])
        {
           do stuff...
        }

        else if ([[obj entity].name isEqualToString:@"EntityName2"])
        {
           do stuff...
        }
}

希望这有帮助

与您的问题无关,但我必须说-调用app delegate来检索模型对象是一种代码味道。