我刚刚将我的Xcode升级到6.1,现在得到一个奇怪的编译错误.
'init()'不可用:导入 - [NSObject init]取代
我是SCNNode的子类,并且对我定义的相同类型的其他类有可选引用.即
import UIKit
import SceneKit
class BayNode: SCNNode {
var leftBay:BayNode?
var rightBay:BayNode?
func addLeftBay()
{
leftBay = BayNode() // 'init()' is unavailable: superseded by import of -[NSObject init]
}
}
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个问题.
非常感谢
我很想采用新的Swift语言,因为这似乎是Apple开发的前进方向.我对iOS 8中的新SceneKit支持印象深刻.我想在运行时以编程方式创建自定义几何,但我很难让Swift代码工作.然而,Objective C中的等效代码工作正常.
这可能是一个错误,或者我做错了什么.
我只是想创建并渲染一个三角形.为简单起见,我将忽略法线和纹理等.所以我只期待看到一个黑色的三角形.
Swift代码(不工作)
var verts = [SCNVector3(x: 0,y: 0,z: 0),SCNVector3(x: 1,y: 0,z: 0),SCNVector3(x: 0,y: 1,z: 0)]
let src = SCNGeometrySource(vertices: &verts, count: 3)
let indexes:Int[]=[0,1,2]
let dat = NSData(bytes: indexes, length: sizeofValue(indexes))
let ele = SCNGeometryElement(data:dat, primitiveType: .Triangles, primitiveCount: 1, bytesPerIndex: sizeof(Int))
let geo = SCNGeometry(sources: [src], elements: [ele])
let nd = SCNNode(geometry: geo)
scene.rootNode.addChildNode(nd)
Run Code Online (Sandbox Code Playgroud)
Objective C Code(确实有效)
SCNVector3 verts[] = { SCNVector3Make(0, 0, 0), SCNVector3Make(1, 0, 0), SCNVector3Make(0, 1, 0) };
SCNGeometrySource *src = [SCNGeometrySource geometrySourceWithVertices:verts …Run Code Online (Sandbox Code Playgroud) 似乎大多数3D创作应用程序使用Z作为"向上"轴.而SceneKit使用Y作为'向上'轴.SceneKit允许您将场景加载为Collada .DAE文件.通过以下任一方式加载场景时:
SCNScene(named: String?, inDirectory: String?, options: [NSObject : AnyObject]?)
Run Code Online (Sandbox Code Playgroud)
要么
SCNSceneSource(URL url: NSURL!, options: [NSObject : AnyObject]!)
Run Code Online (Sandbox Code Playgroud)
您可以指定选项,包括SCNSceneSourceConvertToYUpKey和SCNSceneSourceConvertUnitsToMetersKey.
相应地设置这些,我期望当我将它们添加到从加载的场景中的节点构造的我自己的场景中时,各个节点被变换和缩放.但这些选项似乎没有效果.
let myScene = SCNScene(named: "Scene.dae", inDirectory: nil, options: [SCNSceneSourceConvertToYUpKey:true, SCNSceneSourceConvertUnitsToMetersKey:25.4])
Run Code Online (Sandbox Code Playgroud)
我误解了这些选项参数的含义吗?
我遇到了Appdelegate方法OpenURL的问题.
我已经设置了导入的UTI和文档类型.但是当从邮件附件打开我的应用程序时,当我实施该方法时,应用程序会立即崩溃.
折旧的handleOpenURL有效,但不是OpenURL吗?
目前我在实现中没有代码,我只是返回true.
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String, annotation: AnyObject?) -> Bool {
return true
}
Run Code Online (Sandbox Code Playgroud)
崩溃说 Thread 1: EXC_BAD_ACCESS (code-1, address-0x0)
我真的不想使用已弃用的方法.
swift ×4
scenekit ×3
ios ×2
ios8 ×2
appdelegate ×1
collada ×1
objective-c ×1
xcode ×1
xcode6.1 ×1