最近文章

Swift3/Swift4 转换Html为纯文本

Swift 3或者Swift 4 添加String扩展,把Html字符串转换为纯文本Xcode 9 beta • Swift 4extension String {     var html2AttributedString: NSAttr
标签:

禁用Xcode 9的Swift 3 @objc推断

今天我安装了Xcode 9,并将我的项目转换为Swift 4.0。 令人惊讶的是,我的代码只需做很少的改动就可以兼容新的Swift。 然而,构建后出现一个警告:The use of Swift 3 @objc inference in Swift 4 mode
标签:

Xcode9提交应用报错:Missing App Store Icon. iOS Apps must include a 1024x1024px App Store Icon in PNG format.

在Xcode 9提交应用,报缺失App Store 图标错误:Missing App Store Icon. iOS Apps must include a 1024x1024px App Store Icon in PNG&nb
标签:

Xcode支持多个版本iOS的设备调试

要Xcode支持多个版本iOS设备调试,需要添加设备支持包。路径/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/为支持包所在的文件夹:添加设备支持包后,重启Xcode即可。百度网盘:iOS设备支持包注意:调试最新的iOS版本建议升级Xcode到相应的版本,如Xcode 
标签:

iOS11固定UISearchBar在导航栏的高度

iOS 11重新设计了UISearchBar,四个角改为圆角,高度变大。在导航栏添加搜索框可能会导致导航栏高度变大,所以有必要固定UISearchBar的高度。固定搜索栏的高度为44let searchBar = UISearchBar()  //配置searchBar相关代码 navigationItem.titleView =&nbs
标签:

iTunes 12.7安装ad-hoc app

iTunes升级到12.7后,左侧栏的Apps选项已经去掉了。在iTunes12.7可以参考Manually add items from your computer来安装ad-hoc app。步骤如下:连接设备打开iTunes,在左侧栏找到相应的设备把ad-hoc ipad文件拖入到设备下如图
标签:

禁止UITableView选中高亮显示

去掉UITableViewCell的Selection style即可Objective-Ccell.selectionStyle = UITableViewCellSelectionStyleNone; 或者[cell setSelectionStyle:UITableViewCellSelectionStyleNone]; Swift 2cel
标签:

Swift3/Swift4 转换Html为纯文本

Swift 3或者Swift 4 添加String扩展,把Html字符串转换为纯文本

Xcode 9 beta • Swift 4

extension String {
    var html2AttributedString: NSAttributedString? {
        do {
            return try NSAttributedString(data: Data(utf8),
                          options: [.documentType: NSAttributedString.DocumentType.html,
                                    .characterEncoding: String.Encoding.utf8.rawValue],
                          documentAttributes: nil)
        } catch {
            print("error:", error)
            return  nil
        }
    }
    var html2String: String {
        return html2AttributedString?.string ?? ""
    }
}

Xcode 8.3 • Swift 3.1

extension String {
    var html2AttributedString: NSAttributedString? {
        do {
            return try NSAttributedString(data: Data(utf8), 
                          options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
                                    NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue],
                          documentAttributes: nil)
        } catch {
            print("error:", error)
            return nil
        }
    }
    var html2String: String {
        return html2AttributedString?.string ?? ""
    }
}

使用方法

str.html2String

禁用Xcode 9的Swift 3 @objc推断

今天我安装了Xcode 9,并将我的项目转换为Swift 4.0。 令人惊讶的是,我的代码只需做很少的改动就可以兼容新的Swift。 然而,构建后出现一个警告:

The use of Swift 3 @objc inference in Swift 4 mode is deprecated. Please address deprecated @objc inference warnings, test your code with “Use of deprecated Swift 3 @objc inference” logging enabled, and disable Swift 3 @objc inference.

这里记录了我如何去掉这个警告:

  1. 在项目导航栏单击项目
  2. 选择目标(target)
  3. 点击Build Settings
  4. 在搜索框输入“inference”,快速找到设置
  5. 最后把“Swift 3 @objc Inference”设置为“Default”,重新构建项目

“Swift 3 @objc Inference”设置是做什么的?

在Swift 4之前,编译器对Objective-C自动提供了一些Swift声明。 例如,编译器会为NSObject子类的所有方法创建Objective-C入口点。 该机制称为@objc推断(@obj Inference)。

在Swift 4中,这种自动@objc推断已被废弃,因为生成所有这些Objective-C入口点有代价。 当“Swift 3 @objc Inference”设置为“On”时,它允许旧代码运行。 但是,它会提示这些需要解决的弃用警告,建议“修复”这些警告,并将设置切换到“Default”。新的Swift项目的默认为“Default”。

示例一:Swift 4之前

这段代码在Swift 4之前是有效的,因为方法foo自动暴露给Objective-C:

class MyClass: NSObject {
  func foo() {}

  func test() {
    var cl: AnyObject
    cl = MyClass()
    cl.foo?() // Swift 4之前没有问题
  }
}

示例二:Swift 4

试试在Swift 4中运行相同的代码:

class MyClass: NSObject {
  func foo() {}

  func test() {
    var cl: AnyObject
    cl = MyClass()
    cl.foo?() // Error: Value of type 'AnyObject' has no member 'foo'
  }
}

现在编译器显示一个错误,因为foo方法不再可以从Objective-C获得。 为方便起见,Swift 4代码迁移将“Swift 3 @objc Inference”设置为“On”,这使得我们的代码编译时出现以下警告:

Reference to instance method 'foo()' of 'MyClass' depends on '@objc' attribute inference deprecated in Swift 4.

让类成员可以在Objective-C里使用

如果我们想要从Objective-C访问声明,我们可以使用@objc注释标记个别成员:

class MyClass : NSObject {
  @objc func foo() { } // 这个方法可以在Objective-C访问到
  func bar() { } // 但这个方法不行
}

或者,如果我们希望类的所有成员都暴露于Objective-C,可以使用@objcMembers注释来标记该类:

@objcMembers // 所有的类成员都暴露于Objective-C
class MyClass : NSObject {
  func foo() { }
  func bar() { }
}

参考

原文: Disabling Swift 3 @objc inference in Xcode 9

Xcode9提交应用报错:Missing App Store Icon. iOS Apps must include a 1024x1024px App Store Icon in PNG format.

更新于 2017.11.14 0分钟阅读 0 评论 3 推荐

    默认笔记本

    作者: iOS小菜
  1. Xcode9提交应用报错:Missing App Store Icon. iOS Apps must include a 1024x1024px App Store Icon in PNG format. Page 1

在Xcode 9提交应用,报缺失App Store 图标错误:

Missing App Store Icon. iOS Apps must include a 1024x1024px App Store Icon in PNG format. Without providing the icon in the Asset Catalog or via iTunes Connect, apps cannot be submitted for App Review or Beta App Review

这是因为在Xcode 9需要App Store iOS 1024pt的PNG图标。

1、进入Assets.xcassets

2、滚动到图标集的底部找到

3、上传1024x1024px的图标

Xcode支持多个版本iOS的设备调试

要Xcode支持多个版本iOS设备调试,需要添加设备支持包。

路径/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/为支持包所在的文件夹:

添加设备支持包后,重启Xcode即可。

百度网盘:iOS设备支持包

注意:调试最新的iOS版本建议升级Xcode到相应的版本,如Xcode 9支持iOS11

iOS11固定UISearchBar在导航栏的高度

iOS 11重新设计了UISearchBar,四个角改为圆角,高度变大。

在导航栏添加搜索框可能会导致导航栏高度变大,所以有必要固定UISearchBar的高度。

固定搜索栏的高度为44

let searchBar = UISearchBar()
 //配置searchBar相关代码
navigationItem.titleView = searchBar
if #available(iOS 11.0, *) {
    searchBar.heightAnchor.constraint(equalToConstant: 44).isActive = true
}

iTunes 12.7安装ad-hoc app

iTunes升级到12.7后,左侧栏的Apps选项已经去掉了。在iTunes12.7可以参考Manually add items from your computer来安装ad-hoc app。

步骤如下:

  1. 连接设备
  2. 打开iTunes,在左侧栏找到相应的设备
  3. 把ad-hoc ipad文件拖入到设备下

如图

禁止UITableView选中高亮显示

去掉UITableViewCell的Selection style即可

Objective-C

cell.selectionStyle = UITableViewCellSelectionStyleNone;

或者

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

Swift 2

cell.selectionStyle = UITableViewCellSelectionStyle.None

Swift 3

cell.selectionStyle = .none