【问题标题】: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'初始化代码

标签: ios xcode properties nsmanagedobject nsobject


【解决方案1】:

你不能像那样访问NSManagedObject 的属性,它不像一个普通的对象。这是因为对这些属性的访问应该由 CoreData 管理,而不是由您管理。

你需要使用:

//Set
[item setValue:@"myName" forKey:@"name"];

//Get
[item valueForKey:@"name"]

【讨论】:

  • 但是当核心数据填充对象时,我通常可以访问这些属性。通常我可以。这是第一次有些对象(不是全部)不给我那些属性选项
  • 可以,但是当您将其创建为简单对象时则不行
  • DimensionItems * item = ... 获取 Core Data 创建的对象。 xCode 怎么知道核心数据何时在对象上创建以及何时创建为简单对象?此外,同一行代码 DimensionItems * item = ...; item.name 在一个对象中有效,但在另一个对象中无效。
  • 必须有任何区别,没有代码很难知道。使用我写的方法访问值有什么问题?
  • 没什么 :D 谢谢你,但我很好奇为什么会这样。调用该函数没有区别,因为它是同一个对象上的同一个函数。工作对象和非工作对象都是 NSObjects
猜你喜欢
  • 1970-01-01
  • 2016-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多