0

在数据的许多用途中,有一件事让我感到困惑。CoreData 中的 EG 和 NSManagedObject 子类的属性名称与 CoreData 属性中的属性相同。NSXMLParser 也会发生类似的事情。

为什么是这样?这让我很困惑,因为我从来没有看到正在使用的属性名称的字符串。虽然 NSLoging 我得到一个获取请求对象,

    "<Person: 0x6d5be20> (entity: Person; id: 0x6d5dce0 <x-coredata://6800B6A5-87AF-46B4-9836-9D412A9B3EE4/Person/p1> ; data: {\n    age = 51;\n    firstName = Anthony;\n    lastName = Robbins;\n})",

作为数组元素之一。我不希望有任何不同。

但是在本教程中,当我使用

    for (Person *thisPerson in persons)

(thisPerson 是具有神秘属性的数据对象)。属性名称似乎已按名称排序。

            NSLog(@"First Name = %@", thisPerson.firstName);

这是为什么?肯定需要大量的 NSRegex 表达式和字符串修改来推断这些数据。

4

1 回答 1

0

至于 Core Data(不是NSXMLParser),Core Data 只是使用属性名称在模型中查找相应的属性。如果您正在访问lastName一个NSManagedObject实例,foo.lastName则应该没有实现

-(NSString *)lastName

这将导致 NSObject 类回退到该类NSKeyValueCoding将把调用变成

[foo valueForKey:@"lastName"]

该类NSManagedObject覆盖-valueForKey:(和其他NSKeyValueCoding相关方法)并使用它通过NSPersistentStoreCoordinator.

于 2012-07-04T14:54:41.207 回答