Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何识别显示为空括号的空NSData对象?_Ios_Nsdata_Gamekit_Null_Gkturnbasedmatch - Fatal编程技术网

Ios 如何识别显示为空括号的空NSData对象?

Ios 如何识别显示为空括号的空NSData对象?,ios,nsdata,gamekit,null,gkturnbasedmatch,Ios,Nsdata,Gamekit,Null,Gkturnbasedmatch,我正在处理Game Kit的GKTurnBasedMatch类(请参阅)中的一个损坏问题,该问题有时会导致无效的游戏状态和损坏的匹配数据 因此,作为一种解决方法,我正在创建一种方法来识别这些无效匹配,以便能够适当地处理它们。损坏的matchData似乎是一种很好的方法。然而,到目前为止,我还无法识别他们。当我这样做时: // "match" is an existing GKTurnBasedMatch object NSLog(@"match data is: %@",[match match

我正在处理Game Kit的GKTurnBasedMatch类(请参阅)中的一个损坏问题,该问题有时会导致无效的游戏状态和损坏的匹配数据

因此,作为一种解决方法,我正在创建一种方法来识别这些无效匹配,以便能够适当地处理它们。损坏的matchData似乎是一种很好的方法。然而,到目前为止,我还无法识别他们。当我这样做时:

// "match" is an existing GKTurnBasedMatch object
NSLog(@"match data is: %@",[match matchData]);
NSLog(@"match data is nil? %@",[match matchData] == nil ? @"YES" : @"NO");
NSLog(@"match data equals empty nsdata? %@",[match matchData] == [NSData data] ? @"YES" : @"NO");
我得到以下信息:

match data is: <>
match data is nil? NO
match data equals empty nsdata? NO
匹配数据为:
匹配数据为零?不
匹配数据等于空数据?不
因此,匹配数据显示为一对空括号“”,我希望可以识别为nil,但显然不是

顺便说一句,我正在NSData属性下的核心数据实体中存储此匹配数据。当我保存NSManagedObjectContext,然后记录NSManagedObject以查看其中的内容时,所讨论的NSData属性仍然显示为“”

但是,如果我随后创建一个新的NSManagedObjectContext,从中检索相同的NSManagedObject,然后记录其值,那么NSData属性现在显示为nil


因此,在某个时刻,核心数据似乎正在“清理”其popernil值的属性。我的问题是,在我将该值添加到核心数据存储时,我实际上需要在该点之前将其标识为nil

[NSData data]
返回一个新的
NSData
对象,该对象永远不会==现有对象。要检查它是否为空NSData,请执行以下操作:

[[match matchData] isKindOfClass:[NSData class]] && match.length == 0

您正在对上一个案例中的对象实例进行比较。这两个实例都可能为空,结果可能不为真

试试这个:

 NSLog(@"match data equals empty nsdata? %@",[[match matchData] length] == 0 ? @"YES" : @"NO");

CoreData不会更改您在
NSManagedObject
实例上设置的值。您必须设置空的
NSData


要检查它是否为空数据,请检查其
length
属性。空时应为0。

也有同样的问题。完美答案。