如何使用Core Data迭代检索到的对象?

时间:2014-03-07 05:56:01

标签: ios objective-c

我正在使用Core Data并尝试迭代我正在检索的对象。我在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);
}

计数返回6,所以我知道那里有物体。我也知道'city'是我实体中的一个属性。我得到的错误是:

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

有关如何解决此问题并记录正确返回内容的任何建议吗?

3 个答案:

答案 0 :(得分:4)

而不是迭代对象,为什么不迭代你的实体。

for(<your entity class> obj in self.fetchedRecordsArray){
   //do stuff
}

或者如果获取的记录包含多种类型的实体。

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
    }
}

答案 1 :(得分:1)

尝试更改此

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

            to 

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

注意:* object not object - in for loop

答案 2 :(得分:0)

尝试这个迭代对象,你也可以检查对象的实体,其中Objects是对象数组

for (NSManagedObject *obj in Objects)
{

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

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

希望这有帮助