2017-04-25 63 views
0

考慮以下記錄中的AppleScript:爲什麼我無法遍歷AppleScript中的記錄?

set usergroup to {user1:{name:"Darth Vader", role:"leader"}, user2:{name:"Yoda", role:"instructor"}} 

顯示我可以在特定的用戶:

set trainer to get user1 of usergroup 
display dialog (name of trainer) 

,但如果我要顯示所有用戶我嘗試:

repeat with x from 1 to (length of usergroup) 
    set member to ("user" & x) as item 
    display dialog member 
end repeat 

和我得到user1user2但如果我嘗試:

repeat with x from 1 to (length of usergroup) 
    set member to ("user" & x) as item 
    display dialog (get name of member) as text 
end repeat 

我得到一個錯誤,所以我嘗試:

repeat with x from 1 to (length of usergroup) 
    set member to (get name of ("user" & x)) as item 
    display dialog member as text 
end repeat 

爲什麼我不能夠獲得用戶的name

回答

1

因爲member變量的類是一個字符串,而不是一個鍵。

對於包含用戶的一個簡單的列表中的記錄:使用someRecord as list

set usergroup to {user1:{name:"Darth Vader", role:"leader"}, user2:{name:"Yoda", role:"instructor"}} 
repeat with member in (usergroup as list) -- the member variable contains a record 
    display dialog (name of member) 
    --display dialog (role of member) 
end repeat 

或者,你可以使用run script命令對一個字符串(「用戶」 & X)作爲重點

set usergroup to {user1:{name:"Darth Vader", role:"leader"}, user2:{name:"Yoda", role:"instructor"}} 
repeat with x from 1 to (length of usergroup) 
    set member to ("user" & x) 
    set thisMemberName to run script "on run {thisRecord}" & linefeed & "name of " & member & " of thisRecord" & linefeed & "end run" with parameters {usergroup} 
    display dialog thisMemberName 
end repeat