Ios 我应该向NSUserDefaults.synchronize()传递什么参数?

Ios 我应该向NSUserDefaults.synchronize()传递什么参数?,ios,swift,swift2,Ios,Swift,Swift2,我想在我的spritekit游戏中保存一个高分。根据我观看的所有教程和阅读的堆栈溢出答案,以下代码应该可以工作: NSUserDefaults.standardUserDefaults().setInteger(highScore, forKey: "highScore") NSUserDefaults.synchronize() 然而,我不断地遇到一个错误 NSUserDefaults.synchronize() 错误状态为“调用中缺少参数#1的参数”,我查看的所有地方似乎都使用该

我想在我的spritekit游戏中保存一个高分。根据我观看的所有教程和阅读的堆栈溢出答案,以下代码应该可以工作:

   NSUserDefaults.standardUserDefaults().setInteger(highScore, forKey: "highScore")
 NSUserDefaults.synchronize()
然而,我不断地遇到一个错误

NSUserDefaults.synchronize()

错误状态为“调用中缺少参数#1的参数”,我查看的所有地方似乎都使用该代码,没有错误。我知道swift最近会有更新。此更新是否导致同步功能发生更改,如何解决此问题?

您需要在
standardUserDefaults
上调用
synchronize

NSUserDefaults.standardUserDefaults().synchronize();

请记住,无需调用
synchronize

您需要在
standardUserDefaults
上调用
synchronize

NSUserDefaults.standardUserDefaults().synchronize();

请记住,无需调用
synchronize

synchronize
是一种实例方法,因此您应该在实例上调用它,而不是在类上调用它:

NSUserDefaults.standardUserDefaults().synchronize()
但是,您不应该这样做

报告中指出:

CFF首选项同步
CFPreferencesSynchronize()
(因此
CFPreferencesAppSynchronize()
-[NSUserDefaults synchronize]
)现在几乎在所有情况下都是自动的。调用它的唯一剩余原因是,如果您需要一个单独的进程来同步访问刚刚设置的值;例如,如果设置了首选项,则发布另一个进程接收并读取相同首选项的通知。大多数常规应用程序永远不需要这样做,并且鼓励这样做的应用程序使用进程间通信API(例如XPC)与其他进程通信,而不是使用IPC的首选项系统

CFPreferencesSynchronize()
在10.8中的速度也快得多,如果没有未完成的读写更改,则可以避免执行任何工作

-[NSUserDefaults synchronize]通常不有用

如果一个单独的应用程序将读取您刚才设置的默认值,或者如果一个不使用AppKit的进程正在终止,您应该只需要调用
-synchronize
。在大多数应用程序中,这两种情况都不应出现,并且不应调用
-synchronize
。请注意,在Mac OS X 10.8.4之前,存在一个错误,导致AppKit在应用程序终止期间稍微提前自动同步,因此在应用程序终止时为响应windows关闭而设置的首选项可能无法保存;这个问题已经解决了


synchronize
是一种实例方法,因此您应该在实例上调用它,而不是在类上调用它:

NSUserDefaults.standardUserDefaults().synchronize()
但是,您不应该这样做

报告中指出:

CFF首选项同步
CFPreferencesSynchronize()
(因此
CFPreferencesAppSynchronize()
-[NSUserDefaults synchronize]
)现在几乎在所有情况下都是自动的。调用它的唯一剩余原因是,如果您需要一个单独的进程来同步访问刚刚设置的值;例如,如果设置了首选项,则发布另一个进程接收并读取相同首选项的通知。大多数常规应用程序永远不需要这样做,并且鼓励这样做的应用程序使用进程间通信API(例如XPC)与其他进程通信,而不是使用IPC的首选项系统

CFPreferencesSynchronize()
在10.8中的速度也快得多,如果没有未完成的读写更改,则可以避免执行任何工作

-[NSUserDefaults synchronize]通常不有用

如果一个单独的应用程序将读取您刚才设置的默认值,或者如果一个不使用AppKit的进程正在终止,您应该只需要调用
-synchronize
。在大多数应用程序中,这两种情况都不应出现,并且不应调用
-synchronize
。请注意,在Mac OS X 10.8.4之前,存在一个错误,导致AppKit在应用程序终止期间稍微提前自动同步,因此在应用程序终止时为响应windows关闭而设置的首选项可能无法保存;这个问题已经解决了