Swift2与Swift3不同语法

由于Swift2与Swift3之间有好多语法修正,所以刚入学还是比较蛋疼。网上查了一些资料,罗表以下备用:

CGRect

Swift 2:

let frame = CGRectMake(0, 0, 20, 20)
Swift 3:

let frame = CGRect(x: 0, y: 0, width: 20, height: 20)
CGPoint

Swift 2:

let point = CGPointMake(0, 0)
Swift 3:

let point = CGPoint(x: 0, y: 0)
CGSize

Swift 2:

let size = CGSizeMake(20, 20)
Swift 3:

let size = CGSize(width: 20, height: 20)
CGRectGetMidX

Swift 2:

CGRectGetMidX(view)
Swift 3:

view.midX
CGRectGetMidY

Swift 2:

CGRectGetMidY(view)
Swift 3:

view.midY
UIColor

Swift 2:

let color = UIColor.redColor()
Swift 3:

let color = UIColor.red
“NS”

Swift 2:

NSTimer
NSData
NSError
Swift 3:

Timer
Data
Error
UserDefaults

Swift 2:

NSUserDefaults.standardUserDefaults().//something
Swift 3:

UserDefaults.standard.//something

Binary operator ‘*’ cannot be applied to operands of type ‘CGPoint’ and ‘CGFloat’

查看了CGPoint属性,也是使用的CGFloat,但就是会出错,如下图:
CGFloat

解决问题:
突然想到可以找QQ群问啊,于是找到了问题,是要在CGPoin中的X和Y轴各自计算就不会出错。

网友发来的帮助文档:CGPoint+Extensions.swift

“_OBJC_CLASS_$_P31”, referenced from:

就是这个总是,总是解决不掉,郁闷死了

clang: error: linker command failed with exit code 1 (use -v to see invocation)

这个问题,好像之前遇到过,没记录下来,晕。

解决办法一:
在Build Settings /Library Search Paths中 Libraries 的一项修改为:$(PROJECT_DIR)/Libraries,其默认还有两个引号注意要去除。
解决办法二:
在左侧Libraries文件夹中的libiPhone-lib.a删除,然后在Finder中找到此项目的这个文件,再把它拖进相应的位置即可。

Undefined symbols for architecture armv7:

2017.05.08

上次打包还正常的,这次一打包居然出现这一堆总是来,郁闷。原本还准备打几个包测试没问题就发布个版本的,看来又得被耽搁了。报出的几个错误如下:

正在查找原因。。。
排查:
通过在代码中搜索"__ISN_ResolveConflictingSavedGames",等,发现在是IOSNative这个插件里的代码,由此再一回想,肯定是IOSNativeSettings中之前做过的修改有关系,那时没事把Game Center和Social Sharing的勾给去了。
经再次打包测试,真是的以上的问题,OK 解决问题了。
真是没事找抽型的,呼!!!
总结
还有一个很值得注意的就是寻找答案的方法,在遇到这个问题时,前思后想都觉得没道具,怎么好好的,也没改哪里却突然遇到这种问题,一下子无从下手,搜遍百度也没有找到一样的答案,这时应该在报错的提示中仔细阅读,如__ISN_DeleteSavedGame 这个关键词,还有后面in Bulk_Assembly-CSharp_0.o 这段提示,表示在CSharp中,所以这个问题就可以到CSharp中搜索上面的那个关键词,一查找,再看一下cs文件的路径,就全然明白了,也马上想起了之前做过的哪些改动。

游戏中加载时无法读取数据库:InvalidOperationException: No connection associated with this command

在Unity编辑器中倒还是一切正常,但是Xcode中打包成功安装后,真机上却在加载进度条卡住了,具体内容如下,可以大体看出是数据库表加载的问题。

问题的原因已找到:是因为在登陆界面引用了baseTable只读数据库的问题,去除读取这类数据库,改用其它方式实现功能,如此解决问题。至于为什么会读取这类数据库表会出错,可能是还没生成出数据库表就开始要读取了的原故吧。

Apple Mach-O Linker (Id) Error Linker command failed with exit code 1

在新MAC上打包出现问题如下:
Apple Mach-O Linker (Id) Error

Linker command failed with exit code 1

解决方法:

进入项目TARGETS/选择您的项目

General/Deployment Info/Deployment Target 在此选择了8.0版本

可能是使用的Xcode8.x的原因,5.1.1版本无法正常打包,显示最低版本为基础8.0

Unity4.69破解详细步骤

Error loading page
SSL peer certificate or SSH remote key was not OK
Unity
前两天打开照常打开Unity时,再一次遇到这个问题,又是束手无策,安装破解、断网等都无法解决,郁闷!

以下是解决的详细步骤,我使用的是Unity4.6.9版本。
1. 断网并打开Unity4.69,出现如下界面,选择Manual Activation按钮
unity_02
2. 进入如下界面,并点击Save License按钮保存文件。
unity_03
3. 保存好文件后,再联网进入https://license.unity3d.com/manual 如下图,并上传刚下载的Unity_v4.6.9f1.alf文件。
unity_04
4. 如下图Next进入下一步
unity_05
5. 如下图,下载文件。
unity_06

  1. 到此完成安装,正常进入选择工程项目界面
    unity_07

7.到此完成了无法登陆Unity的启动问题,但看惯了深灰色的界面,就得破解Pro版本,接下来的步骤:使用破解软件获得Unity_v4.x.ulf文件,然后断网重复第2步图中的Load License按钮,载入生成的破解文件,启动Unity软件,熟悉的深灰色界面映入眼前,OK!

error CS0246: The type or namespace name `LocalNotification’ could not be found.

从Unity4.6顺利升级到5.3+,除了新手指示每次都出现和出现作弊提示以外,目前来看一切能正常,但在打包时出现如下报错

问题原因:
去除!UNITY_EDITOR模式,可以看到unity中会提示语法过时

解决办法:在LocalNotification前面添加UnityEngine.iOS.解决问题。

处理后顺利打包导出XCode项目。