其他对象中未显示的对象属性

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

以上是关于其他对象中未显示的对象属性的主要内容,如果未能解决你的问题,请参考以下文章

Oracle Apex 的对象浏览器中未显示任何数据

TensorFlow 对象检测 API 中未检测到任何内容

Java Mail - 电子邮件客户端中未显示附件?

UICollectionView 中未显示 UILabel

Visual Studio 2008 中未显示属性页

Extjs - 在属性网格中显示嵌套对象