其他对象中未显示的对象属性
Posted
技术标签:
【中文标题】其他对象中未显示的对象属性【英文标题】:Properties of object not shown in other objects 【发布时间】:2013-10-30 08:16:09 【问题描述】:我有一个很奇怪的问题。
我创建对象 DimensionItem :
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@class Dimension;
@interface DimensionItem : NSManagedObject
@property (nonatomic, retain) NSNumber * dimItemID;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) Dimension *dimension;
@end
在某些类中,我可以正常访问它的属性,但在某些对象中,当我创建时
DimensionItem * item = ...
item.name ----> Property 'name' not found on object of type 'DimensionItem'
我无法访问它,甚至自动更正已关闭。
我在对象中包含标题:
#import "DimensionItem.h"
编辑:
有初始化代码请求:
DimensionItem * item = [cubeItem getDimensionItemWhitDimensionID:self.dimensionID andDimensionItemID:[obj1 dimensionItemIndex]];
cubeitem 是另一个 NSManagedObject 创建的,它与 Dimension 具有一对多关系的核心数据与 DimensionItem 具有一对多关系。
函数计算集合中的位置并返回DimensionItem。
正如我所说,在某些对象中,同样的功能也可以使用
item.name
但其他人没有
【问题讨论】:
告诉我你的'item'初始化代码 【参考方案1】:你不能像那样访问NSManagedObject
的属性,它不像一个普通的对象。这是因为对这些属性的访问应该由 CoreData 管理,而不是由您管理。
你需要使用:
//Set
[item setValue:@"myName" forKey:@"name"];
//Get
[item valueForKey:@"name"]
【讨论】:
但是当核心数据填充对象时,我通常可以访问这些属性。通常我可以。这是第一次有些对象(不是全部)不给我那些属性选项 可以,但是当您将其创建为简单对象时则不行 DimensionItems * item = ... 获取 Core Data 创建的对象。 xCode 怎么知道核心数据何时在对象上创建以及何时创建为简单对象?此外,同一行代码 DimensionItems * item = ...; item.name 在一个对象中有效,但在另一个对象中无效。 必须有任何区别,没有代码很难知道。使用我写的方法访问值有什么问题? 没什么 :D 谢谢你,但我很好奇为什么会这样。调用该函数没有区别,因为它是同一个对象上的同一个函数。工作对象和非工作对象都是 NSObjects以上是关于其他对象中未显示的对象属性的主要内容,如果未能解决你的问题,请参考以下文章