将对象添加到实例变量数组

Posted

技术标签:

【中文标题】将对象添加到实例变量数组【英文标题】:Adding objects to instance variable array 【发布时间】:2015-05-28 10:33:52 【问题描述】:

有人可以帮我解决这个问题吗:

我正在我的 TableVC.m 文件中创建一个属性:

@property NSMutableArray *savingBeaconSpecs;

在我的 Viewdidload 中,我实例化了数组:

 NSMutableArray *savingBeaconSpecs = [[NSMutableArray alloc]init];

现在我向服务器发出请求,我想将返回的 JSON 保存到对象中,并且每次都将它们保存在数组中。所以我在 ConnectionDidFinishLaunching 中做了以下操作:

 self.artworkArray = [NSJSONSerialization JSONObjectWithData:self.data options:0 error:&err];
NSLog(@"Log ArtworkArray in ConnectionDidFinishLoading%@", self.artworkArray);

还有:

Artwork *artwork = [[Artwork alloc]init];
artwork.title = [self.artworkArray valueForKey:@"name"];
artwork.artist = [[self.artworkArray objectForKey:@"artist"] valueForKey:@"name"];
artwork.CreationYear = [self.artworkArray valueForKey:@"creationYear"];
artwork.categorie = [[self.artworkArray objectForKey:@"exposition"] valueForKey:@"name"];

现在我想把这个对象保存到 saveBeaconSpecs NSMutableArray 中

[self.savingBeaconSpecs addObject:artwork];

但是当我尝试记录他的内容时,NSMUtableArray SavingBeaconSpecs 总是返回 0

有人吗?

【问题讨论】:

【参考方案1】:

因为您在 viewDidLoad 本地声明它:

NSMutableArray *savingBeaconSpecs = [[NSMutableArray alloc]init];

你应该使用

 self.savingBeaconSpecs = [[NSMutableArray alloc]init];

[self.savingBeaconSpecs addObject:artwork];

并将您的财产声明为(没有第一个大写字母 S)

@property NSMutableArray *savingBeaconSpecs;

【讨论】:

【参考方案2】:

要实例化数组,你应该这样做: self.savingBeaconSpecs = [[NSMutableArray alloc] init]; 或同样好: self.savingBeaconSpecs = [NSMutableArray array];

【讨论】:

以上是关于将对象添加到实例变量数组的主要内容,如果未能解决你的问题,请参考以下文章

在ASP.NET开发网站过程中总会遇到未将对象引用到实例化这样的错误 我是初学者 请问该怎么办

如何将实例变量或属性添加到 XCTestCase?

原型模式

未将对象引用设置到对象的实例

堆栈上的 C++ 实例变量存储为指针

如何将自定义数组保存/重新加载到 plist