以前開發的時候想要給檔案新增乙個屬性,系統提供的屬性不太夠, 想增加新的額外屬性 . 當時沒找到,今天偶然看見了,感激並記錄下.
每乙個檔案都有一組屬性資訊,我們通常可以用以下幾種方法來獲得屬性資訊:
nsstring *path = @"...";
//通過nsfilemanager獲取檔案的屬性
nsdictionary *attributes = [[nsfilemanager defaultmanager] attributesofitematpath:path error:null];
nslog(@"%@",attributes);
//通過mditem獲取檔案的屬性
mditemref item = mditemcreate(kcfallocatordefault, (__bridge cfstringref)path);
cfarrayref names = mditemcopyattributenames(item);
attributes = (__bridge_transfer nsdictionary *)(mditemcopyattributes(item, names));
cfrelease(item);
nslog(@"%@",attributes);
//通過nsurl獲取檔案屬性
nsurl *fileurl = [nsurl fileurlwithpath:path];
attributes = [fileurl resourcevaluesforkeys:[nsarray arraywithobject:nsurlfilesizekey] error:null];
nslog(@"%@",attributes);
方法一(通過定義在sys/xattr.h的函式實現):
#include //為檔案增加乙個擴充套件屬性
- (bool)extended1withpath:(nsstring *)path key:(nsstring *)key value:(nsdata *)value
//讀取檔案擴充套件屬性
- (nsdata *)extended1withpath:(nsstring *)path key:(nsstring *)key
else if (readlen > sizeof(buffer)) else
} while (yes);
return nil;
}
方法二(通過nsfilemanager乙個特殊的attributename):
//為檔案增加乙個擴充套件屬性
- (bool)extended2withpath:(nsstring *)path key:(nsstring *)key value:(nsdata *)value
//讀取檔案擴充套件屬性
- (nsdata *)extended2withpath:(nsstring *)path key:(nsstring *)key
nsdictionary *extendedattributes = [attributes objectforkey:@"nsfileextendedattributes"];
if (!extendedattributes)
return [extendedattributes objectforkey:key];
}
iOS開發 為本地檔案新增自定義屬性的工具類
前言 實際開發,我們可能會有這樣的需求,就是為檔案新增自定義的屬性,或者是可以將檔案的相關資訊新增進該檔案的屬性中,這樣可以以備下次讀取利用。那麼本文就是要介紹 拓展檔案屬性的工具類 github 也給出了這個工具類的示例原始碼 這個工具類的設計學習 來自老譚部落格筆記 老譚講解了兩種方法為本地檔案...
iOS分類新增屬性
我們可以通過runtime來給ios的分類新增屬性.1.首先我們像普通的類一樣在.h裡頭使用 property宣告乙個屬性 ch.h.這裡是 類的ch分類的.h檔案 inte ce ch property nonatomic strong nsstring name end這時,m中就會出現兩個警告...
iOS動態新增屬性
之前一篇文章 ios關聯物件 詳細介紹了如何通過關聯物件新增屬性,本篇文章將介紹如何通過runtime的class addproperty或class addivar動態新增屬性,並且帶領大家看看這兩個方法底層是如何實現的。對於已經存在的類我們用class addproperty方法來新增屬性,而對...