gpt4 book ai didi

ios - 在核心数据中无法存储对象

转载 作者:行者123 更新时间:2023-12-01 19:00:33 25 4
gpt4 key购买 nike

我在这里的代码试图将对象列表添加到我的数组形式中,并尝试将该数组添加到代码数据属性中。

#import "ViewController.h"
#import "model.h"
#import "coredataManager.h"

@interface ViewController ()
{
NSMutableArray *entries;
}

@end

@implementation ViewController

- (void)viewDidLoad
{


entries = [[NSMutableArray alloc]init];

coredataManager *coreobj = [[coredataManager alloc]init];
model *obj = [[model alloc]initWithContents:@"1" alternateLink:@"1" DownloadURL:@"1"];
model *obj2 = [[model alloc]initWithContents:@"2" alternateLink:@"2" DownloadURL:@"2"];
model *obj3 = [[model alloc]initWithContents:@"3" alternateLink:@"3" DownloadURL:@"3"];

[entries addObject:obj];
[entries addObject:obj2];
[entries addObject:obj3];

NSLog(@"%@",entries);

[coreobj StoreValues:entries];



[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}

我的NSObject类
#import <Foundation/Foundation.h>

@interface model : NSObject

@property(copy)NSString *filename;
@property(copy)NSString *alternatelink;
@property(copy)NSString *downloadurl;

-(id)initWithContents:(NSString *)Fname alternateLink :(NSString *) ALink DownloadURL :(NSString *)DURL;

@end

NSObject实现文件
#import "model.h"

@implementation model

@synthesize downloadurl,filename,alternatelink;


-(id)initWithContents:(NSString *)Fname alternateLink :(NSString *) ALink DownloadURL :(NSString *)DURL
{
if ((self = [super init])) {
downloadurl = [DURL copy];
filename = [Fname copy];
alternatelink = [ALink copy];
}
return self;
}


@end

存储在核心数据中的代码
-(void)StoreValues:(NSMutableArray *) sample
{
Sample *value = [NSEntityDescription insertNewObjectForEntityForName:@"Sample"
inManagedObjectContext:self.managedObjectContext];
for (int i=0;i<sample.count;i++)
{
model *obj=[sample objectAtIndex:i];
value.url = obj.downloadurl;
value.filename = obj.filename;
value.alternate = obj.alternatelink;

}

NSError *error;
if (![self.managedObjectContext save:&error]) {
NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
}

}

但是只有数组的最后一个值被存储在核心数据中,任何人都可以指导我解决这个问题
提前致谢。

最佳答案

保存之前,请重写对象。改为这样做:

Sample *value;
for (int i=0;i<sample.count;i++)
{
value = [NSEntityDescription insertNewObjectForEntityForName:@"Sample"
inManagedObjectContext:self.managedObjectContext];
model *obj=[sample objectAtIndex:i];
value.url = obj.downloadurl;
value.filename = obj.filename;
value.alternate = obj.alternatelink;

NSError *error;
if (![self.managedObjectContext save:&error]) {
NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
}

}

这样可以在每次迭代后保存该对象,并且不会重写它。然后重新开始。

关于ios - 在核心数据中无法存储对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23205218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com