2017-04-02 32 views
0

因此,新的数据资产类允许读取'数据',但似乎有一些内容限制?我有像这样test.csv文件(这里倒塌观看作为一个单一的线,但每串实际上1线):NSDataAsset数据要求

½f ⅛m 1½f ¼m 2½f ⅜m 3½f ½m 4½f ⅝m 5½f ¾m 6½f ⅞m 7½f 1m 1m ½f 1⅛m 1m 1½f 1¼m 1m 2½f 1⅜m 1m 3½f 1½m 1m 4½f 1⅝m 1m 5½f 1¾m 1m 6½f 1⅞m 1m 7½f 2m 

我通过文本编辑维护文件,像这样(NSData的类别看,但这样的各种方法可以返回不同的固有 - 对'类型',数据):

+ (id)assetWithName:(NSString *)name 
{ 
    NSDataAsset * asset = [[[NSDataAsset alloc] initWithName:name] autorelease]; 
    NSData * data = [[[NSData alloc] initWithData:asset.data] autorelease]; 

    NSAssert(data.length > 0, @"'%@' has zero data.length ", name);// Yoink 

    NSString * string = [[[NSString alloc] initWithData:data 
               encoding:NSUTF8StringEncoding] autorelease]; 
    NSString * type = asset.typeIdentifier; 

    // default to Ascii when UTF8 doesn't work 
    if (!string.length) 
    { 
     string = [[[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding] autorelease]; 
    } 

    if ([@"public.xml" isEqualToString:type]) 
    { 
     return [self assetBook:string]; 
    } 
    else 
    if ([@"public.comma-separated-values-text" isEqualToString:type]) 
    { 
     return [self assetCSVs:string]; 
    } 
    else 
    { 
     NSLog(@"'%@' has unknown asset type %@",name,type); 
     return [self assetCSVs:string]; 
    } 
} 

所有是丹迪,直到我改变了文本。

我讨厌把“½”这样的分数存储为“1/2”,所以我用这些单个字符替代它们。

但是,一旦这样做,断言会引发火灾,所以班级似乎不喜欢我的编辑。我已经把文件作为一个单一字符串(上面) - yuck,我将它分开(-componentsSeparatedByString :)到一个数组,但也许别人可以告诉我这个方法有什么问题?

总的来说,我赞成资产的数据混淆,但似乎有限制。

回答

1

不知道为什么,但用“.dat”类型命名我的文本文件。

报告的资产类型是“dyn.ah62d4rv4ge80k2py”,我猜它像旧的Finder头几个文件字节内容,但是这种类型对于不同内容的几个.dat文件是一样的,所以它可能与方法有关用过的。

+0

ps.s.使用.plist文件作为资源,通过TextWranger或除了Xcode之外的其他东西保存文件允许我得到零读取,但不知道为什么。 – slashlos