NSArray+YYAdd的学习

图片来之网络

数组获取

+ (NSArray *)arrayWithPlistData:(NSData *)plist {
    if (!plist) return nil;
    NSArray *array = [NSPropertyListSerialization propertyListWithData:plist options:NSPropertyListImmutable format:NULL error:NULL];
    if ([array isKindOfClass:[NSArray class]]) return array;
    return nil;
}

将NSData转化为NSArray。 NSArray没有提供将NSData转化为数组的方法,只是提供了+ (nullable NSArray<ObjectType> *)arrayWithContentsOfFile:(NSString *)path;根据文件来获取数组。

NSPropertyListSerialization

提供了将NSData转化为id(包含NSArray和NSDictionary):

+ (nullable id)propertyListWithData:(NSData *)data options:(NSPropertyListReadOptions)opt format:(nullable NSPropertyListFormat *)format error:(out NSError **)error API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0));

也提供了id(包含NSArray和NSDictionary)转化为NSData:

+ (nullable NSData *)dataWithPropertyList:(id)plist format:(NSPropertyListFormat)format options:(NSPropertyListWriteOptions)opt error:(out NSError **)error API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0));

之前如果需要将NSDictionary或NSArray转化为NSData,那么会使用

  • NSJSONSerialization JSON解析
  • - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
  • NSKeyedArchiver 归档
    的方法来转化。现在多了一种使用NSPropertyListSerialization的方法。并且NSJSONSerialization转化的后的NSData一定需要NSJSONSerialization来解析。

随机获取数组中的元素

- (id)randomObject {
    if (self.count) {
        return self[arc4random_uniform((u_int32_t)self.count)];
    }
    return nil;
}

arc4random_uniform指定范围获取随机值。

// END iOS提供了很多种好的方法,但是好多没有直接使用,而是自己再实现一遍,那么!_!。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容