首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS 多国语言本地化与App内语言切换(Swift)写在前面前言准备工作storyboardxib本地化纯代码本地化语言切换后记

    写在前面 本文同步 个人博客 简书 掘金 慕课 使用Xcode 9.3 Swift4.1 前言 语言本地化 大家肯定都多少都听过,今天我要分享的是快速实现语言本地化,与App内语言切换 核心内容主要是三个部分...,否则会报错 build一下就能自动生成相关代码 就可以直接用了,具体用法可以参考上面提到的那篇文章 iOS中多语言本地化流程的优化 语言切换 语言切换的基本原理是使用Userdefault存储当前选择的语言...但是,脚本对于带空格的字符串生成的内容还是有问题,由于是使用sed命令,本人还不是很熟,只能想其他办法,这时候Base.lproj就派上用场了 我们将空格都替换成下划线,或者驼峰命名,在Base中一一对应...{ get { return object(forKey: key) } set { set(newValue...(根据个人习惯修改) localizedFile="${SRCROOT}/Public/LocalizedUtils.swift" # 将localizable.strings中的文本转为swift格式的常量

    2.5K31

    KVC 和 KVO

    KVC Key Value Coding KVC是一种用间接方式访问类的属性的机制。比如你要给一个类中的属性赋值或者取值,可以直接通过类和点运算符实现,当然也可以使用KVC。...不过对于私有属性,点运算符就不起作用,因为私有属性不暴露给调用者,不过使用KVC却依然可以实现对私有属性的读写。...作为一个非正式的协议,你在使用该协议的类中看不到惯用的写法,实际上,这个协议只是隐式地由NSObject实现,继承NSObject的子类默认能够使用这个协议。...开发人员不需要添加任何代码,不需要设计自己的观察者模型,直接可以在工程里使用。其次,KVO的架构非常的强大,可以很容易的支持多个观察者观察同一个属性,以及相关的值。...Swift的KVO与KVC Swift版本的的就看这篇文章吧,内容很详细。 漫谈 KVC 与 KVO Reference iOS开发系列—Objective-C之KVC、KVO

    69310

    如何在 Core Data 中对 NSManagedObject 进行深拷贝

    多年来开发者一直在寻找一种便捷且通用的工具来解决深拷贝的问题,不过直到现在并没有一个被广泛认可的方案。...我在开发 健康笔记[2] 新版本时也碰到了这个问题,需要深拷贝一个结构复杂、关系链牵涉大量数据的托管对象。考虑到以后可能还会遇到类似的情况,我决定编写一段使用简单、适用性广的代码方便自己使用。...MOCloner().clone(object: note) as!...安装 MOCloner 使用 Swift Package Manager 分发。要在另一个 Swift 包中使用它,请在你的 Package.swift 中将其作为一个依赖项添加。...如果想在应用程序中使用 MOCloner,请使用 Xcode 的 File > Add Packages... 将其添加到你的项目中。

    1.5K20

    Swift Core Data 分阶段迁移

    正如在 WWDC23 中宣布的那样,与在 Swift 数据模型之间执行迁移的方式非常相似,你现在可以使用 NSStagedMigrationManager 实例以编程方式定义 Core Data 迁移。...提供一些背景信息为了演示 Core Data 分阶段迁移的工作原理,我将使用我之前在有关使用映射模型进行自定义 Core Data 迁移的文章中使用的相同示例。...让我们比较一下我们的 Track 模型之前和之后的情况,CoreData.swift 文件代码如下:Copy codeCoreData.swift// Beforeimport Foundationimport...设置使用 Core Data 栈。设置使用分阶段迁移的 Core Data 栈。...总结这篇文章介绍了使用分阶段迁移来改进 Core Data 迁移流程的重要性和方法。传统的迁移方法使用映射模型,但这种方法不易维护,扩展性差且容易出错。

    10210

    Swift 定制 Core Data 迁移

    你需要更改数据结构的方式,以适应新功能,同时确保用户不会在不同版本之间丢失任何数据。如果你使用 Core Data 在应用程序中持久化信息,那么 Core Data 迁移就会发挥作用。...持久化了一首歌曲后,使用 Core Data Lab 检查数据库,我们可以看到属性被相应保存:更新模型当前版本的模型存在一些可扩展性问题:模型仅允许每个曲目有一个艺术家,而实际上,一个曲目可以有多个艺术家...我们将创建一个新的类,该类继承自 NSEntityMigrationPolicy,并在旧的 Track 实体上创建并链接一个新的关系到 Artist 实体,V2MigrationPolicy.swift...最后,让我们将此自定义策略添加到映射模型中:现在,如果我们再次运行应用程序并使用 Core Data Lab 检查数据库,我们可以看到一个新的实体已经填充了正确的数据。...总结文章介绍了在应用程序发展过程中,数据模型可能需要进行更改的情况下,如何使用 Core Data 迁移来保持数据的一致性和完整性。

    8300

    Mac OSX 开发入门基础系列之NSTask

    NSTask 在Swift 中与Objective-C中的不同 Objective-C中, 是NSTask类 Swift 中, 是Process类 3....NSTask 使用 我们通过创建一个简单的克隆Git仓库的工程来熟悉NSTask的使用 如果你比较捉急,可以提前从这里下载NSTaskDemo 3.1 创建工程(本示例使用Swift,并默认你已经熟悉基本的...NotificationCenter.default.addObserver(forName: NSNotification.Name.NSFileHandleDataAvailable, object...小结 NSTask为我们提供了可以在一个应用中,调用另一个应用的可能.其中比较普遍的一个使用场景是我们可以在自己的App中,调用强大的Shell命令,或者执行自己写的脚本来实现一些辅助功能 NSPipe...后语 关于NSTask的使用并不十分复杂,但如果想实现强大的需求,最好有一些必备的Shell编程知识,另外值得注意就是沙盒权限问题,文中的一下疑问或者意见,大家可以写在评论区进行讨论,最后希望大家周末愉快

    2.2K40

    iOS动画系列之五:基础动画之缩放篇&旋转篇Swift+OC1. 思路和最终成果2. 抽取公共方法3. 懒加载Layer4. 添加动画

    抽取公共方法 因为需要频繁创建CALayer还有实例化动画,所以不管在OC中还是Swift中都抽取一下公共的方法用来偷懒。哈哈~这就是本宅胖越来越发福的原因。...这里使用了extension的方式,在代码少的时候看不出来优势。代码多了有事就非常明显了,最大的好处就是可以很容易快速定位到代码区域。...extension的作用之一就是可以很清晰的区分出各个func。 ? 使用extension区分代码 静态截取图:是不是很清晰? ?...keyPath抽取出来的原因也是因为偷懒,因为不管是旋转动画还是缩放动画,都需要使用这个属性。...下一篇可以尝试使用CABasicAnimation做点好玩的东东。 喜欢的话就点个赞呗,或者赏俺点口粮。

    3K10

    《Motion Design for iOS》(二十一)

    我们可以将“transform.scale”传入到forkey:的参数中,但我们也可以只传入准确的我们创建的动画关键路径,这样我们就不会混淆JNWSpringAnimation的关键路径和我们要协调动画时使用的关键路径...现在如果你想要在Swift工程中使用JNWSpringAnimation,由于你是使用一个Objective-C框架,你需要使用一些称为“桥街头”的东西让Xcode知道你想要在你的Swift代码中使用非...Objective-C头文件都会被设为Swift可见,这样你就可以使用Swift来交互它们的Objective-C函数。...酷的地方在于当你想要在你的Swift代码中使用它们时,你不需要有任何import说明,Xcode会处理它。...这里是我用Swift写的创建与上面的例子一样的动画的代码,依然是使用JNWSpringAnimation。

    39720

    【IOS开发基础系列】SDWebImageDownloader专题

    既ASIHttp+AsyncImage之后,我一直使用AFNetworking集成的UIImageView+AFNetworking.h,但后者对于图片的缓存实际应用的是NSURLCache自带的cache...        在使用SDWebImage加载较多图片造成内存警告时,定期调用  [[SDImageCache sharedImageCache] setValue: nil forKey: @"memCache..."]; 2.1.1.5 方案四(不推荐):修复SD库代码,不做解压,直接返回压缩的原图 2.1.1.6 方案五(推荐):使用CGDataProviderRef进行图形解压重绘 iOS开发中界面展示大图片时...,发生内存猛增,直接闪退的情况,简单说一下解决方案 http://www.myexception.cn/swift/2033029.html 关于SDWebImage加载高清图片导致app崩溃的问题 http...使用SDWebImage加载大量图片后造成内存泄露的解决办法 http://www.bubuko.com/infodetail-985746.html

    77820

    Encoding and Decoding Custom Types

    Swift标准库定义了数据编码和解码的标准化方法。 您可以通过在自定义类型上实现Encodable和Decodable协议来使用此方法。...如果序列化数据格式中使用的键与数据类型中的属性名称不匹配,请通过将String指定为CodingKeys枚举的原始值类型来提供备用键。用作每个枚举情况的原始值的字符串是在编码和解码期间使用的键名。...case名称与其原始值之间的关联使您可以根据Swift API设计指南命名数据结构,而不必匹配您正在建模的序列化格式的名称,标点符号和大小写。...(Double.self, forKey: .elevation) } } 初始化程序通过使用参数Decoder实例上的方法来填充Coordinate实例。...Coordinate实例的两个属性使用Swift标准库提供的键控容器API进行初始化。

    1.9K40

    使用Codable归档Swift对象

    当使用这样的数据时,Swift为我们提供了一个很棒的协议,称为Codable:一种专门用于存档和取消存档数据的协议,这是一种“将对象转换为纯文本然后再次转换”的奇特方式。...该过程的这一部分由称为JSONEncoder的新类型提供支持。它的工作是获取符合Codable的内容,然后以 JavaScript Object Notation(JSON)的形式发送回该对象。...该名称暗示它特定于JavaScript,但实际上,我们都使用它,因为它是如此的快速和简单。 Codable协议不需要我们使用JSON,实际上可以使用其他格式,但这是迄今为止最常见的格式。...encoder.encode(self.user) { UserDefaults.standard.set(data, forKey: "UserData") } } 该数据常量是一种新的数据类型...当我们返回另一种方式时(当我们拥有JSON数据并且想要将其转换为Swift Codable类型时),我们应该使用JSONDecoder而不是JSONEncoder,但是过程大致相同。

    2.1K30
    领券