Kivy:使用JSON文件获得高分的iOS出错

时间:2014-06-25 03:59:51

标签: python ios json kivy

我尝试使用JSON文件和Kivy中的json存储语言为应用设置高分记录跟踪器。

我导入了JSONstore,在我的主要游戏类中我做了

class Game(FloatLayout):
    highscorejson = JsonStore('highscore.json')
    highscore = NumericProperty(highscorejson.get('highscore')['best'])

在我开始上课后,我有一个结束游戏的结束游戏功能,并检查新得分是否超过旧的高分。

def end_game(self):
    if self.score > self.highscore:
         self.highscorejson.put('highscore', best = self.score)
    self.highscore = self.highscorejson.get('highscore')['best']

当我通过Kivy运行它时运行完美,但是当我使用我的iphone作为测试设备通过XCode运行它时,当你的得分高于高分并且游戏结束时它会崩溃。错误消息如下。

  File "/usr/local/lib/python2.7/site-packages/kivy/storage/__init__.py", line 174, in put
   File "/usr/local/lib/python2.7/site-packages/kivy/storage/jsonstore.py", line 39, in     store_sync
 IOError: [Errno 1] Operation not permitted: 'highscore.json'
2014-06-24 21:59:34.385 cookie[2320:60b] Application quit abnormally!
2014-06-24 21:59:34.457 cookie[2320:60b] Leaving

完全错误: http://pastebin.com/Zy0DtysW

2 个答案:

答案 0 :(得分:0)

您可能尝试将文件保存在无效位置。尝试包含要写出的文件的完整路径 - 您可以使用kivy_home_dir来帮助解决此问题。

from kivy import kivy_home_dir
from os.path import join
highscore = JsonStore(join(kivy_home_dir, 'highscore.json'))

答案 1 :(得分:0)

我也遇到了这个问题。所以,最后,我能够解决这个问题。下一个代码对我帮助很大。

from os.path import join

class MyApp(App):
def build(self):
    data_dir = getattr(self, 'user_data_dir')
    store = JsonStore(join(data_dir, 'storage_file.json'))

据我了解,user_data_dir为每个应用和操作系统路径存储唯一的,存储当前应用的代码。