Puedo obtener algunos mensajes de error en los registros de

 [User Defaults] Failed to write value for key GameId in CFPrefsPlistSource<0x1740faf00> (Domain: xxx.xxxxxx, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null)): Path not accessible, switching to read-only
[User Defaults] attempt to set <private> for key in <private> in read-only (due to a previous failed write) preferences domain CFPrefsPlistSource<0x1740faf00> (Domain: xxx.xxxxxx, User: kCFPreferencesCurrentUser, ByHost: No, Container: (null))

Lo que causa esto?

Que es lo que yo uso NSUserDefaults:

- (NSString *)gameId
{
    if (_gameId)
        return _gameId;

    _gameId = [[NSUserDefaults standardUserDefaults] objectForKey:@"GameId"];
    return _gameId;
}

- (void)setGameId:(NSString *)aGameId
{
    _gameId = aGameId;
    [[NSUserDefaults standardUserDefaults] setObject:_gameId forKey:@"GameId"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}
  • ¿Cuál es la versión de Xcode & la versión de iOS que utiliza ?
  • Xcode 8, iOS 10

6 Comentarios

  1. 29

    Gran cantidad de personas se están encontrando con este problema en Xcode 8.

    «Tan loco como suena pruebe a reiniciar el teléfono y el anfitrión, a veces Xcode puede atascarse durante suma razón, solo reinicie ayuda.

    construir con Xcode 8.1 Beta y va a ver la misma advertencia, pero usted también tendrá el valor. «

    referencia : https://forums.developer.apple.com/thread/51348

    • ¡Oh mi dios! Parece que esto ayuda
    • Fresco. Me alegro de que haya ayudado 🙂
    • sí, es muy difícil pensar en esas cosas de la solución y bueno a ver que este post fue útil
  2. 2

    Estaba recibiendo un mensaje de error similar:

    [User Defaults] attempt to set <private> for key in <private> in read-only (due to a previous failed write) preferences domain CFPrefsPlistSource<0x1700f5f80>

    pero esto sólo ocurrió cuando yo estaba conectado en Xcode.

    Un reinicio del dispositivo fijo de este.

  3. 1

    si usted sufre de este problema cuando intenta guardar los datos de la extensión de la APLICACIÓN mediante el uso de userDefault,tal vez hubiera escrito este código : [[NSUserDefaults standardUserDefaults] initWithSuiteName:@»group.xxx.com»];,este código de reset userDefault. En realidad,el código correcto es : [[NSUserDefaults alloc] initWithSuiteName:@»group.xxx.com»];
    http://www.jianshu.com/p/e782104c3bc3

    • Xcode8 es Swift3 cargado, por lo que suena como «UserDefaults.estándar.set(latitud, forKey: «lat»)»
  4. 1

    Yo sólo tenía el mismo error. El error, para mí, fue porque me llama sincronizar varias veces.

    Llamando [userDefaults sincronizar] sólo una vez todos los mensajes de error desapareció.

  5. 0

    Me acaba de eliminar la aplicación y volver a instalar a través de Xcode. Con XCode 8.2.1.

  6. 0

    Me gustaría compartir mi solución para este problema. En mi caso, el error fue un error legítimo y mis datos no se guardan correctamente. Resulta que el error fue causado por tener un NSUserDefaults «el ahorro de los datos» en un bucle.

    Por «el ahorro de los datos» me refiero a esto (pseudocódigo):

    loop{
        [defaults setObject:@"Data" forKey:@"Key"];
        [defaults synchronize];
    }

    Para que el código se ejecuta varias veces muy rápido y causar el problema.
    Supongo que «sincronizar» no se puede manejar llamadas simultáneas.

    Lo que se necesita hacer es:

    loop{
        [defaults setObject:@"Data" forKey:@"Key"];
    }
    [defaults synchronize];

    sincronizar ser llamado una vez de todos los objetos que ha establecido.

Dejar respuesta

Please enter your comment!
Please enter your name here