2017-07-04 21 views
0

私は非常にです。スウィフトには新しいので、これは "ダム"の質問であれば前もって謝ります。私はランダムなアイテム(この場合は武器)を生成するためのプレイグラウンドスクリプトで作業しています。私のコードを実行すると、私はこのエラーになります:エラー:実行が中断されました。理由:EXC_BAD_INSTRUCTION(コード= EXC_I386_INVOP、サブコード= 0x0)。私がしようとしていたのは、変数weaponHandleのクラスnormalBladeTypeに構造体(ハンドル)のインスタンスを保持することです。私はこのトピックについて研究しようとしましたが、私はまだ答えを見つけていません。どんな提案も素晴らしいだろう。私が知っているすべてのために、私はこれについてすべて間違っているかもしれません。Swift - クラスに構造体インスタンスを格納する方法

おかげで、

私のコード:

//: Playground - noun: a place where people can play 

import Cocoa 



let handleWoods = ["White Ash", "Oak", "White Oak", "Elm", "Maple","Walnut", "Cherry", "Rosewood", "Ash", "Hickory", "Birch", "Hemlock", "Cedar", "Pine"] 
let handleGrips = ["Leather", "Buckskin", "Sharkskin", "Goat Skin", "Deerskin", "Elk Skin", "Rayskin", "Snakeskin", "Silk Cord", "Cotton Cord"] 
let gripQualities = ["Simple", "Interwoven", "Ornate", "Smooth", "Thin", "Thick", "Ruff", "Worn"] 

func returnRandomItem(_ list: [Any])-> Any { 
    return list[Int(UInt32(list.count))] 
} 




struct handle { 
    var name: String 
    var value, grip: Int 
    var weight: Double 
    var withGrip: Bool 

    init(withGrip: Bool) { 
     self.weight = 0.25 
     self.withGrip = withGrip 
     let handleNameWithWood = "\(returnRandomItem(handleWoods)) Handle" 
     if self.withGrip { 
      let randGrip = "\(returnRandomItem(gripQualities)) \(returnRandomItem(handleGrips)) Grip)" 
      self.name = "\(randGrip) (\(handleNameWithWood))" 
      self.grip = 75 
      self.value = 2 
     } else { 
      self.name = handleNameWithWood 
      self.grip = 50 
      self.value = 1 
     } 
    } 

    func description() { 
     print("Handle Description \(self.name)") 
     } 

} 


class weapon { 
    var TypeOfWeapon: String 
    var weaponHandle: handle 

    init(weaponType: String, doesHaveGrip: Bool) { 
     self.TypeOfWeapon = weaponType 
     self.weaponHandle = handle(withGrip: doesHaveGrip) 
    } 
} 

class normalBladeType: weapon { 
    init() { 
     super.init(weaponType: "normalBladeType", doesHaveGrip: false) 
    } 

    func description() { 
     print("TypeOfWeapon: \(self.TypeOfWeapon)") 
     print("TypeDescription: normal hilt (guard - handle - pommel) + straight blade") 
    } 
} 


var foo = normalBladeType() 
foo.description() 
+0

質問を編集して、 'returnRandomItem'のソースコードを含めてください。 –

答えて

0

あなたreturnRandomItem機能が間違っています。

func returnRandomItem(_ list: [Any])-> Any { 
    let index: UInt32 = arc4random_uniform(UInt32(list.count)) 
    return list[Int(index)] 
} 

このコードで私はうまく動作しています。

+0

ありがとうございました。他の場所で問題が発生している可能性があります。私はクラスのもので構造体を暗闇の中で撮っていました(ドキュメンテーションなどを見て、間違った問題を探して一日過ごしました)。 – JHuggett

+0

ようこそ。受け入れてくれてありがとう – adev

関連する問題