小编Sma*_*ome的帖子

Google App Engine数据存储问题:获取TypeError:尝试插入DataStore时无法设置非属性

模型定义

class SeqNumbers(ndb.Model):
"""APNS Server -- SeqNumbers object that stores sequence number of stored messages between two devices"""
  SeqNumberStart = ndb.IntegerProperty(required=True)
  SeqNumberEnd = ndb.IntegerProperty(required=True)
  Sourcein = ndb.StringProperty
  Destin = ndb.StringProperty
Run Code Online (Sandbox Code Playgroud)

要添加到数据存储区的代码.这导致TypeError:无法设置非属性Sourcein(帖子末尾的完整错误)

任何帮助理解正在发生的事情将不胜感激.

data ={}
data['SeqNumberStart']=0
data['SeqNumberEnd']=0
data['key']=seqKey
data['Sourcein']='user_IOT'
data['Destin']='user_SmartHome'
SeqNumbers(**data).put()
Run Code Online (Sandbox Code Playgroud)

GAE日志中的完全错误

E 02:08:17.725 Encountered unexpected error from ProtoRPC method implementation: TypeError (Cannot set non-property Sourcein)
  Traceback (most recent call last):
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/protorpc-1.0/protorpc/wsgi/service.py", line 181, in protorpc_service_app
      response = method(instance, request)
    File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/endpoints-1.0/endpoints/api_config.py", line 1332, in invoke_remote
      return remote_method(service_instance, request)
    File …
Run Code Online (Sandbox Code Playgroud)

google-app-engine app-engine-ndb google-cloud-datastore

3
推荐指数
1
解决办法
537
查看次数

如果将属性定义为副本,则在分配给ivar时是否仍需要进行复制?

假设我有一个定义为的属性@property (copy) NSString *name

假设我有init如下定义的方法。

-(instancetype) initWithName:(NSString *)name
{
   self = [super init];
   if (self)
   {
      _name = [name copy]; //Do I need this copy or will ARC do it automatically?
   }
   return self;
}
Run Code Online (Sandbox Code Playgroud)

我是否需要注释行中的副本,或者ARC将copy像在综合设置器中一样,根据属性声明中的进行处理?

objective-c automatic-ref-counting declared-property

2
推荐指数
1
解决办法
95
查看次数

为什么我们不能直接在NSArray中存储C结构

当我试图将C结构存储到NSArray时,我遇到了一个错误(我能够通过转换为NSData来解决它,如下面链接中所指定的).但是,我很想知道为什么没有使用NSData的麻烦就行不通. 链接到我使用的解决方案

请注意:我不想要解决方案,它已经解决了.我只是想通过理解为什么下面的直接方法不起作用来提高我对Objective-C基础的理解.

我想做的事情:一个简单的程序,允许一个人添加一个杂货项目,并在添加到购物车后将其标记为已完成

  1. 使用3个元素定义C结构(item,count和BOOL的名称,以跟踪它是否已添加到购物车)

  2. 每次创建新项目时,我都会执行以下groceryItem*secondGroceryItem = malloc(sizeof(groceryItem)); secondGroceryItem-> itemName ="Beer"; secondGroceryItem-> count = 3; secondGroceryItem-> purchase = NO;

  3. 然后我将它添加到NSMutableArray使用[myGroceryList addObject:(__ bridge id)(secondGroceryItem)]跟踪杂货项目

其中myGroceryList早先定义为NSMutableArray*myGroceryList = [NSMutableArray array];

这不起作用.我必须在存储在NSMutableArray之前转换为NSData.为什么我不能直接在NSMutableArray中存储指向我的C结构的指针?

c objective-c

1
推荐指数
1
解决办法
1987
查看次数

可选参数目标C.

假设我有一个实现的方法,比如XXX,它当前不带参数,并使用硬编码参数操纵一些数据.

我在我的代码中的多个位置调用此方法.

现在我想添加一些灵活性,其中方法采用确定参数的参数而不是使用硬编码值.但我仍然希望我现有的代码能够运行.基本上,我想通过添加一个参数来修改方法,并说如果在没有参数的情况下调用方法,则假设硬编码值.

看起来唯一的方法是复制代码并创建一个新方法.即原始的两个方法和没有参数的新方法.有没有其他方法可以做到这一点,而无需重复代码?

objective-c

1
推荐指数
1
解决办法
315
查看次数