iOS中第三方有序字典框架——M13OrderedDictionary(一)

简介: iOS中第三方有序字典框架——M13OrderedDictionary

一、引言


       M13OrderedDictionary是拥有字典和数组功能的第三方集合序列,开发者可以通过索引和键值来实现对其中元素的访问。其实现了NSArray和NSDictionary中的所有方法,并且支持KVC与KVO。


       M13OederedDictionary中提供的方法包括:


1.创建与初始化。


2.访问键和值


3.查询与搜索。


4.发送消息。


5.比较与排序。


6.枚举与遍历。


7.描述与存储。


8.KVO键值监听。


9.KVC键值编码。


10.索引与下标。


       另外,M13OrderedDictionary针对Xcode7也做了许多优化,例如引入了泛型的代码支持的风格。M13OrderedDictionary库的git地址如下:https://github.com/Marxon13/M13OrderedDictionary


二、M13OrderedDictionary中方法与属性解析


//类方法创建实例对象

//默认的初始化方法

+ (instancetype)orderedDictionary;

//使用M13OrderedDictionary来创建实例对象

+ (instancetype)orderedDictionaryWithOrderedDictionary:(M13OrderedDictionary M13Generics(KeyType, ObjectType) *)orderedDictionary;

//通过文件来创建实例对象

+ (instancetype)orderedDictionaryWithContentsOfFile:(NSString *)path;

//通过URL来创建实例对象

+ (instancetype)orderedDictionaryWithContentsOfURL:(NSURL *)URL;

//创建单键值实例对象

+ (instancetype)orderedDictionaryWithObject:(M13GenericType(ObjectType, id))anObject

                             pairedWithKey:(M13GenericType(KeyType, id<NSCopying>))aKey;

//通过NSDictionary创建实例对象

+ (instancetype)orderedDictionaryWithDictionary:(NSDictionary M13Generics(KeyType, ObjectType) *)entries;


//初始化方法创建实例对象

//默认的初始化方法

- (instancetype)init;

//使用M13OrderedDictionary来进行初始化

- (instancetype)initWithOrderedDictionary:(M13OrderedDictionary M13Generics(KeyType, ObjectType) *)orderedDictionary;

//使用M13OrderedDictionary来进行初始化 可选是否对其中元素进行复制操作

- (instancetype)initWithOrderedDictionary:(M13OrderedDictionary M13Generics(KeyType, ObjectType) *)orderedDictionary copyEntries:(BOOL)flag;

//通过文件来进行初始化

- (instancetype)initWithContentsOfFile:(NSString *)path;

//通过url来进行初始化

- (instancetype)initWithContentsOfURL:(NSURL *)URL;

//通过NSDictionary对象来进行初始化

- (instancetype)initWithContentsOfDictionary:(NSDictionary M13Generics(KeyType, ObjectType) *)entries;

//通过键数组与值数组来进行初始化

- (instancetype)initWithObjects:(NSArray M13Generics(ObjectType) *)orderedObjects

                pairedWithKeys:(NSArray M13Generics(KeyType) *)orderedKeys NS_DESIGNATED_INITIALIZER;


//方法

//判断字典中是否包含某个元素

- (BOOL)containsObject:(M13GenericType(ObjectType, id))object;

//判断字典中是否包含某个键值对

- (BOOL)containsObject:(M13GenericType(ObjectType, id))object

        pairedWithKey:(M13GenericType(KeyType, id<NSCopying>))key;

//判断字典中是否包含某个键值对 传入的字典参数需要为单键值字典

- (BOOL)containsEntry:(NSDictionary M13Generics(KeyType, ObjectType) *)entry;

//获取字典中元素个数

@property (nonatomic, readonly) NSUInteger count;

//获取字典中最后一个元素的值

@property (nonatomic, readonly, M13_NULLABLE) M13GenericType(ObjectType, id) lastObject;

//获取字典中最后一个元素的键

@property (nonatomic, readonly, M13_NULLABLE) M13GenericType(KeyType, id<NSCopying>) lastKey;

//获取字典中最后一个元素键值对

@property (nonatomic, readonly, M13_NULLABLE) NSDictionary M13Generics(KeyType, ObjectType) *lastEntry;

//通过某个下标获取字典中的元素的值

- (M13GenericType(ObjectType, id))objectAtIndex:(NSUInteger)index;

//通过某个下标获取字典中的元素的键

- (M13GenericType(KeyType, id<NSCopying>))keyAtIndex:(NSUInteger)index;

//通过某个下标获取字段中的元素 返回的为单键值对NSDictionary对象

- (NSDictionary M13Generics(KeyType, ObjectType) *)entryAtIndex:(NSUInteger)index;

//通过一组下标获取一组元素的值

- (NSArray M13Generics(ObjectType) *)objectsAtIndices:(NSIndexSet *)indeces;

//通过一组下标获取一组元素的键

- (NSArray M13Generics(KeyType) *)keysAtIndices:(NSIndexSet *)indices;

//通过一组下标获取一组元素 这个方法获取的是有序集合

- (M13OrderedDictionary M13Generics(KeyType, ObjectType) *)entriesAtIndices:(NSIndexSet *)indices;

//通过一组下标获取一组元素 这个方法获取的是无序集合

- (NSDictionary M13Generics(KeyType, ObjectType) *)unorderedEntriesAtIndices:(NSIndexSet *)indices;

//示例中包含的无序字典集合

@property (nonatomic, readonly) NSDictionary M13Generics(KeyType, ObjectType) *unorderedDictionary;

//所有键组成的数组

@property (nonatomic, readonly) NSArray M13Generics(KeyType) *allKeys;

//所有值组成的数组

@property (nonatomic, readonly) NSArray M13Generics(ObjectType) *allObjects;

//获取某个值对应的所有键组成的数组

- (NSArray M13Generics(KeyType) *)allKeysForObject:(M13GenericType(ObjectType, id))anObject;

//获取某个键对应的值

- (M13_NULLABLE M13GenericType(ObjectType, id))objectForKey:(M13GenericType(KeyType, id<NSCopying>))key;

//获取某些键对应的值 如果没有找到 则可以设置默认返回的值 即参数anObject

- (NSArray M13Generics(ObjectType) *)objectForKeys:(NSArray M13Generics(KeyType) *)keys

                                   notFoundMarker:(M13GenericType(ObjectType, id))anObject;

//所有值的枚举

@property (nonatomic, readonly) NSEnumerator M13Generics(ObjectType) *objectEnumerator;

//所有键的枚举

@property (nonatomic, readonly) NSEnumerator M13Generics(KeyType) *keyEnumerator;

//所有元素的枚举

@property (nonatomic, readonly) NSEnumerator M13Generics(NSDictionary<KeyType, ObjectType> *) *entryEnumerator;

//所有值的反向枚举

@property (nonatomic, readonly) NSEnumerator M13Generics(ObjectType) *reverseObjectEnumerator;

//所有键的反向枚举

@property (nonatomic, readonly) NSEnumerator M13Generics(KeyType) *reverseKeyEnumerator;

//所有元素的反向枚举

@property (nonatomic, readonly) NSEnumerator M13Generics(NSDictionary<KeyType, ObjectType> *) *reverseEntryEnumerator;

//获取某个值的下标 找不到会返回NSNotFound

- (NSUInteger)indexOfObject:(M13GenericType(ObjectType, id))object;

//获取某个键的下标 找不到会返回NSNotFound

- (NSUInteger)indexOfKey:(M13GenericType(KeyType, id<NSCopying>))key;

//获取某个元素的下标 找不到会返回NSNotFound

- (NSUInteger)indexOfEntryWithObject:(M13GenericType(ObjectType, id))object

                      pairedWithKey:(M13GenericType(KeyType, id<NSCopying>))key;

//通过NSDictionary来获取某个元素的下标 找不到会返回NSNotFound

- (NSUInteger)indexOfEntry:(NSDictionary M13Generics(KeyType, ObjectType) *)entry;

//通过元素的值在某个范围内查询下标

- (NSUInteger)indexOfObject:(M13GenericType(ObjectType, id))object inRange:(NSRange)range;

//通过元素的键在某个范围内查询下标

- (NSUInteger)indexOfKey:(M13GenericType(KeyType, id<NSCopying>))key inRange:(NSRange)range;

//在某个范围内查询某个元素的下标

- (NSUInteger)indexOfEntryWithObject:(M13GenericType(ObjectType, id))object

                      pairedWithKey:(M13GenericType(KeyType, id<NSCopying>))key

                            inRange:(NSRange)range;

- (NSUInteger)indexOfEntry:(NSDictionary M13Generics(KeyType, ObjectType) *)entry inRange:(NSRange)range;

//查找与某个元素的值相同的元素下标

- (NSUInteger)indexOfObjectIdenticalTo:(M13GenericType(ObjectType, id))object;

//查找获取与某个元素的值相同的元素的键

- (M13_NULLABLE M13GenericType(KeyType, id<NSCopying>))keyOfObjectIdenticalTo:(M13GenericType(ObjectType, id))object;

//查找与某个元素的值相同的元素下标 在某个范围内进行查找

- (NSUInteger)indexOfObjectIdenticalTo:(M13GenericType(ObjectType, id))object inRange:(NSRange)range;

//查找获取与某个元素的值相同的元素的键 在某个范围内进行查找

- (M13_NULLABLE M13GenericType(KeyType, id<NSCopying>))keyOfObjectIdenticalTo:(M13GenericType(ObjectType, id))object inRange:(NSRange)range;

//符合查找block中检测条件的元素的下标

/*

开发者可以在block中获取到遍历出的 object与index,返回值决定是否停止查找

*/

- (NSUInteger)indexOfObjectPassingTest:(BOOL (^)(M13GenericType(ObjectType, id) obj,

                                                NSUInteger idx,

                                                BOOL *stop))predicate;

//同上 获取到的是键

- (M13_NULLABLE M13GenericType(KeyType, id<NSCopying>))keyOfObjectPassingTest:(BOOL (^)(M13GenericType(ObjectType, id) obj, NSUInteger idx,BOOL *stop))predicate;

//同上 只是这个方法可以设置枚举类型

/*

typedef NS_OPTIONS(NSUInteger, NSEnumerationOptions) {

   NSEnumerationConcurrent = (1UL << 0), //正向枚举

   NSEnumerationReverse = (1UL << 1),    //逆向枚举

};

*/

- (NSUInteger)indexOfObjectWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (^)(M13GenericType(ObjectType, id) obj, NSUInteger idx, BOOL *stop))predicate;

//同上 获取到的是元素

- (M13_NULLABLE M13GenericType(KeyType, id<NSCopying>))keyOfObjectWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (^)(M13GenericType(ObjectType, id) obj, NSUInteger idx,BOOL *stop))predicate;

//在一定下标集合中进行查找

- (NSUInteger)indexOfObjectAtIndices:(NSIndexSet *)indexSet

                            options:(NSEnumerationOptions)opts

                        passingTest:(BOOL (^)(M13GenericType(ObjectType, id) obj, NSUInteger idx, BOOL *stop))predicate;

//同上

- (M13_NULLABLE M13GenericType(KeyType, id<NSCopying>))keyOfObjectAtIndices:(NSIndexSet *)indexSet options:(NSEnumerationOptions)opts passingTest:(BOOL (^)(M13GenericType(ObjectType, id) obj,NSUInteger idx,BOOL *stop))predicate;

//在范围内进行比较查询

- (NSUInteger)indexOfObject:(M13GenericType(ObjectType, id))object

             inSortedRange:(NSRange)r options:(NSBinarySearchingOptions)opts

           usingComparator:(NSComparator)cmp;

//同上

- (M13_NULLABLE M13GenericType(KeyType, id<NSCopying>))keyOfObject:(M13GenericType(ObjectType, id))object

                                                    inSortedRange:(NSRange)r

                                                          options:(NSBinarySearchingOptions)opts

                                                  usingComparator:(NSComparator)cmp;

//进行一组元素下标的查询

- (NSIndexSet *)indicesOfObjectsPassingTest:(BOOL (^)(M13GenericType(ObjectType, id) obj,

                                                     NSUInteger idx,

                                                     BOOL *stop))predicate;

- (NSIndexSet *)indicesOfObjectsWithOptions:(NSEnumerationOptions)opts

                               passingTest:(BOOL (^)(M13GenericType(ObjectType, id) obj,

                                                     NSUInteger idx,

                                                     BOOL *stop))predicate;

//进行一组元素键的查询

- (NSArray M13Generics(KeyType) *)keysOfObjectsPassingTest:(BOOL (^)(M13GenericType(ObjectType, id) obj,

                                                                    NSUInteger idx,

                                                                    BOOL *stop))predicate;

- (NSArray M13Generics(KeyType) *)keysOfObjectsWithOptions:(NSEnumerationOptions)opts

                                              passingTest:(BOOL (^)(M13GenericType(ObjectType, id) obj,

                                                                    NSUInteger idx,

                                                                    BOOL *stop))predicate;

//向字典中的每一个元素发送消息

- (void)makeObjectsPerformSelector:(SEL)aSelector;

//向字典中的每一个元素发送消息 带参数

- (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(id)anObject;

//对字典中的元素进行枚举遍历

- (void)enumerateObjectsUsingBlock:(void (^)(M13GenericType(ObjectType, id) obj, NSUInteger idx, BOOL *stop))block;

- (void)enumerateObjectsWithOptions:(NSEnumerationOptions)opts

                        usingBlock:(void (^)(M13GenericType(ObjectType, id) obj, NSUInteger idx, BOOL *stop))block;

//在一定范围内进行枚举

- (void)enumerateObjectsAtIndices:(NSIndexSet *)indexSet

                         options:(NSEnumerationOptions)opts

                      usingBlock:(void (^)(M13GenericType(ObjectType, id) obj, NSUInteger idx, BOOL *stop))block;

//获取与另一个数组中第一个相同的元素的值

- (M13GenericType(ObjectType, id))firstObjectInCommonWithOrderedDictionary:(M13OrderedDictionary *)otherOrderedDictionary;

//获取与另一个数组中第一个相同的元素的键

- (M13GenericType(ObjectType, id<NSCopying>))firstKeyInCommonWithOrderedDictionary:(M13OrderedDictionary *)otherOrderedDictionary;

//获取与另一个数组中第一个相同的元素

- (NSDictionary M13Generics(KeyType, ObjectType) *)firstEntryInCommonWithOrderedDictionary:(M13OrderedDictionary *)otherOrderedDictionary;

//判断两个字典是否相同

- (BOOL)isEqualToOrderedDictionary:(M13OrderedDictionary *)otherOrderedDictionary;

//向字典中追加键值对

- (M13OrderedDictionary M13Generics(KeyType, ObjectType) *)orderedDictionaryByAddingObject:(M13GenericType(ObjectType, id))object pairedWithKey:(M13GenericType(KeyType, id<NSCopying>))aKey;

- (M13OrderedDictionary M13Generics(KeyType, ObjectType) *)orderedDictionaryByAddingEntry:(NSDictionary M13Generics(KeyType, ObjectType) *)entry;

//向字典中追加一组键值对

- (M13OrderedDictionary M13Generics(KeyType, ObjectType) *)orderedDictionaryByAddingObjects:(NSArray M13Generics(ObjectType) *)orderedObjects pairedWithKeys:(NSArray M13Generics(KeyType) *)orderedKeys;

//筛选元素

- (M13OrderedDictionary M13Generics(KeyType, ObjectType) *)filteredOrderDictionarysUsingPredicateForObjects:(NSPredicate *)predicate;

//获取一定范围内的子字典

- (M13OrderedDictionary M13Generics(KeyType, ObjectType) *)subOrderedDictionaryWithRange:(NSRange)range;

//进行元素排序相关的方法

- (M13OrderedDictionary M13Generics(KeyType, ObjectType) *)sortedByObjectsUsingFunction:(NSInteger (*)(M13GenericType(ObjectType, id),M13GenericType(ObjectType, id),void * M13__NULLABLE))comparator context:(M13_NULLABLE void *)context;

- (M13OrderedDictionary M13Generics(KeyType, ObjectType) *)sortedByKeysUsingFunction:(NSInteger (*)(M13GenericType(KeyType, id<NSCopying>),M13GenericType(KeyType, id<NSCopying>),void * M13__NULLABLE))comparator context:(M13_NULLABLE void *)context;

- (M13OrderedDictionary M13Generics(KeyType, ObjectType) *)sortedByObjectsUsingFunction:(NSInteger (*)(M13GenericType(ObjectType, id),M13GenericType(ObjectType, id), void * M13__NULLABLE))comparator context:(M13_NULLABLE void *)context hint:(M13_NULLABLE NSData *)hint;

- (M13OrderedDictionary M13Generics(KeyType, ObjectType) *)sortedByKeysUsingFunction:(NSInteger (*)(M13GenericType(KeyType, id<NSCopying>),M13GenericType(KeyType, id<NSCopying>),void * M13__NULLABLE))comparator context:(M13_NULLABLE void *)context hint:(M13_NULLABLE NSData *)hint;

- (M13OrderedDictionary M13Generics(KeyType, ObjectType) *)sortedByObjectsUsingDescriptors:(NSArray *)descriptors;

- (M13OrderedDictionary M13Generics(KeyType, ObjectType) *)sortedByKeysUsingDescriptors:(NSArray *)descriptors;

- (M13OrderedDictionary M13Generics(KeyType, ObjectType) *)sortedByObjectsUsingSelector:(SEL)comparator;

- (M13OrderedDictionary M13Generics(KeyType, ObjectType) *)sortedByKeysUsingSelector:(SEL)comparator;

- (M13OrderedDictionary M13Generics(KeyType, ObjectType) *)sortedByObjectsUsingComparator:(NSComparator)cmptr;

- (M13OrderedDictionary M13Generics(KeyType, ObjectType) *)sortedByKeysUsingComparator:(NSComparator)cmptr;

- (M13OrderedDictionary M13Generics(KeyType, ObjectType) *)sortedByObjectsWithOptions:(NSSortOptions)opts usingComparator:(NSComparator)cmptr;

- (M13OrderedDictionary M13Generics(KeyType, ObjectType) *)sortedByKeysWithOptions:(NSSortOptions)opts usingComparator:(NSComparator)cmptr;

//写入文件

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag;

//写入到URL

- (BOOL)writeToURL:(NSURL *)aURL atomically:(BOOL)flag;

//添加监听

- (void)addObserver:(NSObject *)anObserver toObjectsAtIndices:(NSIndexSet *)indices forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(M13_NULLABLE void *)context;

- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(M13_NULLABLE void *)context;

//移除监听

- (void)removeObserver:(NSObject *)anObserver fromObjectsAtIndices:(NSIndexSet *)indices forKeyPath:(NSString *)keyPath;

- (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath context:(M13_NULLABLE void *)context;

//KVC相关方法

- (void)setValue:(M13_NULLABLE id)value forKey:(NSString *)key;

- (void)setValue:(M13_NULLABLE id)value forKeyPath:(NSString *)keyPath;

- (id)valueForKey:(NSString *)key;

- (id)valueForKeyPath:(NSString *)keyPath;

//归档相关方法

- (void)encodeWithCoder:(NSCoder *)aCoder;

- (id)initWithCoder:(NSCoder *)decoder;

//copy相关方法

- (id)copy;

- (id)copyWithZone:(M13_NULLABLE NSZone *)zone;

- (id)mutableCopy;

- (id)mutableCopyWithZone:(NSZone *)zone;


目录
打赏
0
0
0
0
47
分享
相关文章
iOS应用开发中有多种主流框架
iOS应用开发中有多种主流框架
334 60
【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
327 75
深入探索iOS开发中的SwiftUI框架
【10月更文挑战第21天】 本文将带领读者深入了解Apple最新推出的SwiftUI框架,这一革命性的用户界面构建工具为iOS开发者提供了一种声明式、高效且直观的方式来创建复杂的用户界面。通过分析SwiftUI的核心概念、主要特性以及在实际项目中的应用示例,我们将展示如何利用SwiftUI简化UI代码,提高开发效率,并保持应用程序的高性能和响应性。无论你是iOS开发的新手还是有经验的开发者,本文都将为你提供宝贵的见解和实用的指导。
157 66
未来已来:探索区块链、物联网与虚拟现实技术的融合与应用安卓与iOS开发中的跨平台框架选择
【8月更文挑战第30天】在科技的巨轮下,新技术不断涌现,引领着社会进步。本文将聚焦于当前最前沿的技术——区块链、物联网和虚拟现实,探讨它们各自的发展趋势及其在未来可能的应用场景。我们将从这些技术的基本定义出发,逐步深入到它们的相互作用和集成应用,最后展望它们如何共同塑造一个全新的数字生态系统。
探索iOS开发中的SwiftUI框架
【10月更文挑战第39天】在苹果的生态系统中,SwiftUI框架以其声明式语法和易用性成为开发者的新宠。本文将深入SwiftUI的核心概念,通过实际案例展示如何利用这一框架快速构建用户界面,并探讨其对iOS应用开发流程的影响。
基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v9.1版已发布
RainbowChat是一套基于开源IM聊天框架 MobileIMSDK 的产品级移动端IM系统。RainbowChat源于真实运营的产品,解决了大量的屏幕适配、细节优化、机器兼容问题
104 5
探索iOS开发中的SwiftUI框架
【10月更文挑战第21天】在苹果生态系统中,SwiftUI的引入无疑为iOS应用开发带来了革命性的变化。本文将通过深入浅出的方式,带领读者了解SwiftUI的基本概念、核心优势以及如何在实际项目中运用这一框架。我们将从一个简单的例子开始,逐步深入到更复杂的应用场景,让初学者能够快速上手,同时也为有经验的开发者提供一些深度使用的技巧和策略。
82 1
安卓与iOS的跨平台开发:Flutter框架深度解析
在移动应用开发的海洋中,Flutter作为一艘灵活的帆船,正引领着开发者们驶向跨平台开发的新纪元。本文将揭开Flutter神秘的面纱,从其架构到核心特性,再到实际应用案例,我们将一同探索这个由谷歌打造的开源UI工具包如何让安卓与iOS应用开发变得更加高效而统一。你将看到,借助Flutter,打造精美、高性能的应用不再是难题,而是变成了一场创造性的旅程。
探索iOS开发中的SwiftUI框架
【9月更文挑战第21天】在iOS应用开发的广阔天地中,SwiftUI框架如一股清新之风,为开发者带来了声明式语法的便捷与高效。本文将深入探讨SwiftUI的核心概念、布局方式及数据绑定机制,同时通过实例演示如何运用SwiftUI构建用户界面,旨在引领读者领略SwiftUI的魅力,并激发其对iOS开发新趋势的思考与实践。
58 6
探索iOS应用开发中的SwiftUI框架
【9月更文挑战第26天】 在iOS开发的海洋中,SwiftUI犹如一艘现代的快艇,引领着开发者们驶向更加高效与直观的编程体验。本文将带你领略SwiftUI的魅力,从其设计理念到实际应用,我们将一步步揭开它如何简化界面构建过程的面纱。通过对比传统方式,你将看到SwiftUI如何让代码变得像诗一样优美,同时保持强大的功能性和灵活性。准备好让你的iOS开发技能加速升级,一起驾驭这股新潮流吧!

热门文章

最新文章

  • 1
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    21
  • 2
    iOS|解决 setBrightness 调节屏幕亮度不生效的问题
    21
  • 3
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    3
  • 4
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    2
  • 5
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    6
  • 6
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    1
  • 7
    iOS各个证书生成细节
    5
  • 8
    iOS|记一名 iOS 开发新手的前两次 App 审核经历
    6
  • 9
    【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记5 Data Structures、Methods、Properties
    2
  • 10
    iOS:应用程序的线程安全性
    1
  • 1
    iOS|解决 setBrightness 调节屏幕亮度不生效的问题
    110
  • 2
    iOS|记一名 iOS 开发新手的前两次 App 审核经历
    16
  • 3
    iOS各个证书生成细节
    27
  • 4
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    142
  • 5
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    46
  • 6
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    58
  • 7
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    48
  • 8
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    41
  • 9
    uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
    162
  • 10
    【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
    327
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等