【问题标题】:Storing Many Images in NSDocument in Objective-C : [iOS]在 Objective-C 的 NSDocument 中存储许多图像:[iOS]
【发布时间】:2016-08-30 10:43:41
【问题描述】:

我正在尝试在 NSDocument 中存储许多图像,其名称模式如下:-

image 1, image 2, image 3, image 4, .....

图像计数应随着点击注册按钮的次数而增加。为了存储这个按钮的点击计数,我使用了 NSUserDefault。但问题是应用程序崩溃后我只能存储 1 张图像。

以下是我正在使用的代码:-

- (IBAction)registerFaceAction:(id)sender
{
    NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];

    long count = [userDefaults integerForKey:@"my_key"];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *documentsDirectory = [paths objectAtIndex:count];

    NSMutableString *imageName = [NSMutableString string];

    [imageName appendString:[NSString stringWithFormat:@"ImageData %ld", count]];

    [imageName appendString:[NSString stringWithFormat: @".png"]];

    NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:imageName];

    UIImage *image = _inputImage;

    NSData *imageData = UIImagePNGRepresentation(image);
    [imageData writeToFile:savedImagePath atomically:NO];

    [userDefaults setInteger:count+1 forKey:@"my_key"];

    [userDefaults synchronize];        

}

【问题讨论】:

    标签: ios objective-c nsuserdefaults nsdocument


    【解决方案1】:

    计数应始终为0 以获取文档目录路径。 第一次用户默认返回 0,因此它获取文档目录,但是在第一个之后计数变为 1,并且当它尝试从 1 个索引表单 paths 数组中查找对象时,它给出了数组越界异常.

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    
    NSString *documentsDirectory = [paths objectAtIndex:0];
    

    编码愉快...

    【讨论】:

      【解决方案2】:

      您正在错误地准备文档目录字符串。它不应该随着计数而改变。

      以下更正代码:

      - (IBAction)registerFaceAction:(id)sender
      {
          NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
      
          long count = [userDefaults integerForKey:@"my_key"];
      
          NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
      
          NSString *documentsDirectory = [paths objectAtIndex:0];//corrected line
      
          NSMutableString *imageName = [NSMutableString string];
      
          [imageName appendString:[NSString stringWithFormat:@"ImageData %ld", count]];
      
          [imageName appendString:[NSString stringWithFormat: @".png"]];
      
          NSLog(@"imageName is :- %@",imageName);
      
          NSLog(@"Count is :- %ld",count);
      
          NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:imageName];
      
          UIImage *image = self.imgCapture;
      
          NSData *imageData = UIImagePNGRepresentation(image);
          [imageData writeToFile:savedImagePath atomically:NO];
      
          [userDefaults setInteger:count+1 forKey:@"my_key"];
      
          [userDefaults synchronize];
      
          NSLog(@"imageName is :- %ld",count);
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-20
        • 1970-01-01
        • 1970-01-01
        • 2013-03-09
        • 1970-01-01
        • 2012-07-29
        相关资源
        最近更新 更多