2016-06-18 2 views
0

pythonサーバーapiはリクエストの署名をチェックし、すべての値を取得し、ソートしてから秘密とmd5ハッシュを追加します。しかし、obj-Cでsort()関数をシミュレートする方法はわかりません。 Pythonのmake_signコードがあります:メソッドNSArrayをobj-Cでソートします。同等のpython sort(timsort)

def make_sign(api_secret, params=[]): 
""" 
    >>> make_sign("mysecret",[1,'2','string']) 
    'AACF0E5427EECA3490C5642C9916785' 
""" 
_params = [p for p in params if p is not None] 
_params.sort() 
_params.insert(0, api_secret) 
strs = ''.join(_params) 
mds = md5(strs.encode('utf-8')).hexdigest() 
return mds.upper() 

答えて

1

あなたは-sortedArray… methodsNSArrayのインスタンスを並べ替えることができます。これは、関数とクロージャをソートするために、キー(オブジェクト自体の場合はself)の単純なソートから始まります。ちょうど方法を選んでください!

しかし、文字列をソートすることはあいまいではありません。 I.ドイツ語では、 "A"と "Ä"または "s"、 "ss"と "ß"をソートするさまざまな方法があります。したがって、並べ替え順序を同じにするには、-sortedArrayUsingComparator:を使用して、独自の比較を作成する必要があります。

+0

私は '-sortedArray'について知っていますが、どのようにNSArrayを比較するかわからないのは、figureとcharacterとstringの両方です。 –

+0

'-isKindOfClass:'でタイプを確認できます。すべてのデータが「NSString」型ですか?しかし、そのような場合には、自然順序は存在しないので、第2段落で説明したようにしなければなりません。これは出発点です:https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/index.html#//apple_ref/occ/instm/NSString/compare:options : –

関連する問題