Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.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
如何判断文件是否已通过NSFileManager ios上载_Ios_Objective C_Nsfilemanager - Fatal编程技术网

如何判断文件是否已通过NSFileManager ios上载

如何判断文件是否已通过NSFileManager ios上载,ios,objective-c,nsfilemanager,Ios,Objective C,Nsfilemanager,我正在将文件上载到Dropbox,我想知道是否可以通过NSFileManager标记任何内容来测试文件是否已经上载。我一直在浏览文档,还没有找到任何有用的东西 例如,如果我上传了一个名为song.m4a的文件,并且用户在应用程序中更改了该文件的名称,那么我如何才能确定该文件是否已以新名称上传,从而不再上传该文件 是否有任何属性或属性可以设置为查看文件是否已上载 谢谢。您可以使用散列,例如,您可以计算文件的MD5散列并将其存储在手机上的本地文件中,当用户尝试上载文件时,您不检查其名称,只需重新计算

我正在将文件上载到Dropbox,我想知道是否可以通过NSFileManager标记任何内容来测试文件是否已经上载。我一直在浏览文档,还没有找到任何有用的东西

例如,如果我上传了一个名为song.m4a的文件,并且用户在应用程序中更改了该文件的名称,那么我如何才能确定该文件是否已以新名称上传,从而不再上传该文件

是否有任何属性或属性可以设置为查看文件是否已上载


谢谢。

您可以使用散列,例如,您可以计算文件的MD5散列并将其存储在手机上的本地文件中,当用户尝试上载文件时,您不检查其名称,只需重新计算MD5散列并检查其是否存在于您的本地文件中,如果存在,则之前已上载一次

编辑:

您可以将任何内容转换为NSData,然后计算该NSData的哈希值,例如,在您的情况下,您可以这样加载文件

NSData* data = [NSData dataWithContentsOfFile:yourFilePath];
- (NSString*)MD5:(NSData*)input
{
  // Create byte array of unsigned chars
  unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH];

  // Create 16 byte MD5 hash value, store in buffer
  CC_MD5(input.bytes, input.length, md5Buffer);

  // Convert unsigned char buffer to NSString of hex values
  NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
  for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) 
    [output appendFormat:@"%02x",md5Buffer[i]];

  return output;
}
然后你可以像这样把它散列

NSData* data = [NSData dataWithContentsOfFile:yourFilePath];
- (NSString*)MD5:(NSData*)input
{
  // Create byte array of unsigned chars
  unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH];

  // Create 16 byte MD5 hash value, store in buffer
  CC_MD5(input.bytes, input.length, md5Buffer);

  // Convert unsigned char buffer to NSString of hex values
  NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
  for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) 
    [output appendFormat:@"%02x",md5Buffer[i]];

  return output;
}
别忘了导入

#import <CommonCrypto/CommonDigest.h>

我看了一些散列的例子,我想知道,我是否需要使用NSString来计算散列?还是NSData?还是会有所不同?我不熟悉散列,我想知道用户通过重命名文件来更改NSString是否会更改散列计算。请原谅我的无知。您可以从NSString或NSData计算哈希,所有数据都可以转换为NSData,因为所有数据都是字节,我将编辑我的答案,请检查