Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 视图控制器仅在第一次保存到coredata时填写我的表单_Ios_Objective C - Fatal编程技术网

Ios 视图控制器仅在第一次保存到coredata时填写我的表单

Ios 视图控制器仅在第一次保存到coredata时填写我的表单,ios,objective-c,Ios,Objective C,所以这对我来说有点奇怪,但我有一个表格,可以填好,保存到coreData,然后带回来,填好保存的字段。除了保存在可转换属性中的NSMutableIndexSet之外,其他一切都正常工作。它保存fine并每次重新加载fine,除非我保存第二次,否则如果我重新加载页面,我会得到一个NSLog:(无索引) 如果我重新运行应用程序,保存的数据将正确填充,直到我再次保存 编辑:我想我真正的问题是,为什么需要重新运行应用程序才能让我的视图正常工作?有解决办法吗 保存代码: - (IBAction)save:

所以这对我来说有点奇怪,但我有一个表格,可以填好,保存到coreData,然后带回来,填好保存的字段。除了保存在可转换属性中的NSMutableIndexSet之外,其他一切都正常工作。它保存fine并每次重新加载fine,除非我保存第二次,否则如果我重新加载页面,我会得到一个NSLog:
(无索引)
如果我重新运行应用程序,保存的数据将正确填充,直到我再次保存

编辑:我想我真正的问题是,为什么需要重新运行应用程序才能让我的视图正常工作?有解决办法吗

保存代码:

- (IBAction)save:(id)sender {
    NSManagedObjectContext *context = [self managedObjectContext];

    if ((self.form)||(formEdited)) {

    }

    else {
        self.form = [NSEntityDescription insertNewObjectForEntityForName:@"CookingSupplement" inManagedObjectContext:context];
    }
    // Update existing form
    [self.form setValue:@"Form 1" forKey:@"formType"];

    [self prepIndexSave:self.type.selectedSegmentIndexes secondMethod:self.type forKey:@"type" forIndexKey:@"typeIndexes"];

    NSLog(@"indexes being saved= %@", self.type.selectedSegmentIndexes);

      NSError *error = nil;
    // Save the object to persistent store
    if (![context save:&error]) {
        NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
    }

    formEdited = YES;
}
- (void)prepIndexSave:(NSIndexSet *)multiIndex secondMethod:(UISegmentedControl *)seg forKey:(NSString *)key forIndexKey:(NSString *)indexKey {
    NSMutableArray *array = [NSMutableArray array];
    [multiIndex enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
        [array addObject:@(idx)];
    }];


    NSMutableArray *titles = [NSMutableArray array];
    for (NSNumber *index in array) {
        [titles addObject:[seg titleForSegmentAtIndex:index.integerValue]];
    }
    NSLog(@"new array::%@",titles);
    [self.form setValue:titles forKey:key];

    // now set indexes
    [self.form setValue:multiIndex forKey:indexKey];


}
- (void)viewDidAppear:(BOOL)animated {
    [self.type setSelectedSegmentIndexes:[self.form valueForKey:@"typeIndexes"]];

    NSLog(@"form type indexes:%@", [self.form valueForKey:@"typeIndexes"]);

}
@property (strong, retain) NSManagedObject *form;
@property (strong, nonatomic) IBOutlet MultiSelectSegmentedControl *type;
NSLog始终打印要保存的正确索引

助手方法:

- (IBAction)save:(id)sender {
    NSManagedObjectContext *context = [self managedObjectContext];

    if ((self.form)||(formEdited)) {

    }

    else {
        self.form = [NSEntityDescription insertNewObjectForEntityForName:@"CookingSupplement" inManagedObjectContext:context];
    }
    // Update existing form
    [self.form setValue:@"Form 1" forKey:@"formType"];

    [self prepIndexSave:self.type.selectedSegmentIndexes secondMethod:self.type forKey:@"type" forIndexKey:@"typeIndexes"];

    NSLog(@"indexes being saved= %@", self.type.selectedSegmentIndexes);

      NSError *error = nil;
    // Save the object to persistent store
    if (![context save:&error]) {
        NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
    }

    formEdited = YES;
}
- (void)prepIndexSave:(NSIndexSet *)multiIndex secondMethod:(UISegmentedControl *)seg forKey:(NSString *)key forIndexKey:(NSString *)indexKey {
    NSMutableArray *array = [NSMutableArray array];
    [multiIndex enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
        [array addObject:@(idx)];
    }];


    NSMutableArray *titles = [NSMutableArray array];
    for (NSNumber *index in array) {
        [titles addObject:[seg titleForSegmentAtIndex:index.integerValue]];
    }
    NSLog(@"new array::%@",titles);
    [self.form setValue:titles forKey:key];

    // now set indexes
    [self.form setValue:multiIndex forKey:indexKey];


}
- (void)viewDidAppear:(BOOL)animated {
    [self.type setSelectedSegmentIndexes:[self.form valueForKey:@"typeIndexes"]];

    NSLog(@"form type indexes:%@", [self.form valueForKey:@"typeIndexes"]);

}
@property (strong, retain) NSManagedObject *form;
@property (strong, nonatomic) IBOutlet MultiSelectSegmentedControl *type;
视图显示:

- (IBAction)save:(id)sender {
    NSManagedObjectContext *context = [self managedObjectContext];

    if ((self.form)||(formEdited)) {

    }

    else {
        self.form = [NSEntityDescription insertNewObjectForEntityForName:@"CookingSupplement" inManagedObjectContext:context];
    }
    // Update existing form
    [self.form setValue:@"Form 1" forKey:@"formType"];

    [self prepIndexSave:self.type.selectedSegmentIndexes secondMethod:self.type forKey:@"type" forIndexKey:@"typeIndexes"];

    NSLog(@"indexes being saved= %@", self.type.selectedSegmentIndexes);

      NSError *error = nil;
    // Save the object to persistent store
    if (![context save:&error]) {
        NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
    }

    formEdited = YES;
}
- (void)prepIndexSave:(NSIndexSet *)multiIndex secondMethod:(UISegmentedControl *)seg forKey:(NSString *)key forIndexKey:(NSString *)indexKey {
    NSMutableArray *array = [NSMutableArray array];
    [multiIndex enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
        [array addObject:@(idx)];
    }];


    NSMutableArray *titles = [NSMutableArray array];
    for (NSNumber *index in array) {
        [titles addObject:[seg titleForSegmentAtIndex:index.integerValue]];
    }
    NSLog(@"new array::%@",titles);
    [self.form setValue:titles forKey:key];

    // now set indexes
    [self.form setValue:multiIndex forKey:indexKey];


}
- (void)viewDidAppear:(BOOL)animated {
    [self.type setSelectedSegmentIndexes:[self.form valueForKey:@"typeIndexes"]];

    NSLog(@"form type indexes:%@", [self.form valueForKey:@"typeIndexes"]);

}
@property (strong, retain) NSManagedObject *form;
@property (strong, nonatomic) IBOutlet MultiSelectSegmentedControl *type;
实施:

- (IBAction)save:(id)sender {
    NSManagedObjectContext *context = [self managedObjectContext];

    if ((self.form)||(formEdited)) {

    }

    else {
        self.form = [NSEntityDescription insertNewObjectForEntityForName:@"CookingSupplement" inManagedObjectContext:context];
    }
    // Update existing form
    [self.form setValue:@"Form 1" forKey:@"formType"];

    [self prepIndexSave:self.type.selectedSegmentIndexes secondMethod:self.type forKey:@"type" forIndexKey:@"typeIndexes"];

    NSLog(@"indexes being saved= %@", self.type.selectedSegmentIndexes);

      NSError *error = nil;
    // Save the object to persistent store
    if (![context save:&error]) {
        NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
    }

    formEdited = YES;
}
- (void)prepIndexSave:(NSIndexSet *)multiIndex secondMethod:(UISegmentedControl *)seg forKey:(NSString *)key forIndexKey:(NSString *)indexKey {
    NSMutableArray *array = [NSMutableArray array];
    [multiIndex enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
        [array addObject:@(idx)];
    }];


    NSMutableArray *titles = [NSMutableArray array];
    for (NSNumber *index in array) {
        [titles addObject:[seg titleForSegmentAtIndex:index.integerValue]];
    }
    NSLog(@"new array::%@",titles);
    [self.form setValue:titles forKey:key];

    // now set indexes
    [self.form setValue:multiIndex forKey:indexKey];


}
- (void)viewDidAppear:(BOOL)animated {
    [self.type setSelectedSegmentIndexes:[self.form valueForKey:@"typeIndexes"]];

    NSLog(@"form type indexes:%@", [self.form valueForKey:@"typeIndexes"]);

}
@property (strong, retain) NSManagedObject *form;
@property (strong, nonatomic) IBOutlet MultiSelectSegmentedControl *type;
此NSLog打印正确的索引,直到按下save并重新加载页面。通过重新运行应用程序,然后加载并打印保存的正确索引,可以纠正此问题。
如果需要更多信息,请告诉我,我会添加它。

我做到了!半天之后,我发现将NSMutableIndex保存到transformable属性类型会导致问题,并添加:

NSIndexSet *indexSet = [multiIndex copy];
对我的助手来说,一切都成功了


你能粘贴你的ViewWillDisplay/ViewDidDisplay和其他方法吗?Oops viewDidLoad被认为是biewDidAppear,但这就是我在viewDidLoad中对视图显示/加载所做的一切,我在viewDidLoad中注释了所有内容,仍然存在相同的问题。哪一行代码输出带有“(无索引)”的NSLog(…)?ReyGonzales在视图中出现。当我第一次打开视图时,它会显示类似于
[索引数量:1(在1个范围内),索引:(1)]
的内容,但是如果我单击我的保存按钮,然后单击返回,然后返回到我的表单,我没有得到任何索引来更好地了解我拥有的内容:我有一个加载所有已启动表单的tableview,从那里,您可以单击启动的表单,它将推送表单并从coredata加载保存的数据。当我保存时,然后推回并返回到表单中,除了这些索引之外,所有内容都正确加载