我刚刚开始学习如何在iOS上实现核心数据模型.在关于如何使用实体之间的一对一关系存储和检索数据的一些基本教程之后,我现在尝试实现一对多关系.我的数据模型由两个实体组成,它们各自的类定义如下:
Restaurant:
@interface Restaurant :NSObject
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSMutableArray *user_reviews; /* One to Many Relation to Review Entity*/
@end
Review:
@interface Review : NSObject
@property (nonatomic, strong) NSString *rating;
@property (nonatomic, strong) NSString *review_text;
@property (nonatomic, strong) User *user;
@end
Run Code Online (Sandbox Code Playgroud)
我发现使用NSMutableSet插入的类似问题,但我无法为NSMutable数组实现相同的问题.
目前我的插入代码如下:
NSManagedObjectContext *context = [self managedObjectContext];
Restaurant *rest = [NSEntityDescription insertNewObjectForEntityForName:@"Restaurant" inManagedObjectContext:context];
rest.name = restaurant.name;
Run Code Online (Sandbox Code Playgroud)
我通过JSON检索Restaurant及其评论的数据,并将它们存储在临时类中,然后将它们保存到CORE数据库.如何插入具有一对多关系的数据?
编辑:目前我以类的形式接收数据,该类将user_review属性定义为
NSMutableArray *user_reviews;
Run Code Online (Sandbox Code Playgroud)
我试图实现这个相同的类插入核心数据模型.但核心数据模型使用NSSet而不是NSMutableArray.一种粗暴的方法是复制具有相同属性的所有类,除了使用NSMutableArray,我将其更改为NSSet.但这会产生大量的冗余代码.难道不应该有更有效的方法吗?
我正在尝试创建一个自定义NSLog()
方法,只有在调试变量为true时才DNSLog()
执行该方法NSLog
.
-(void)DNSLog:(NSString *)formatString, ...
{
if(debug){
va_list args;
va_start(args, formatString);
NSLog([[NSString alloc] initWithFormat:formatString arguments:args]);
va_end(args);
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用它时
DNSLog(@"Hello %d",x);
Run Code Online (Sandbox Code Playgroud)
我收到一个编译错误:
Undefined symbols for architecture i386:
"_DZNSLog", referenced from:
-[RestaurantInfoViewController viewDidLoad] in RestaurantInfoViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
我用这个作为参考:http://www.cocoawithlove.com/2009/05/variable-argument-lists-in-cocoa.html
我哪里错了?
我有一个长度为 order 的大字符串5*10^6
。
我必须通过将其分成 16 个字符的块来进行一些处理。我使用自定义函数来拆分字符串,假设它的性能会比拼接方法更好。
功能如下:
def spliceSplitter(s):
sum = 0
while len(s) > 0:
block = s[:16]
# Assuming the process to be done with data block is calculating its length.
sum += len(block)
s = s[16:]
return sum
Run Code Online (Sandbox Code Playgroud)
和自定义功能:
def normalSplitter(s):
sum = 0
l = len(s)
data =""
for i in xrange(l):
if i%16 == 0:
# Assuming the process to be done with data block is calculating its length.
sum += len(data)
data …
Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用Flex,似乎无法弄清楚如何匹配以下Expression:
"Dog".*"Cat"
------------------
Input :
Dog Ca Cat Cc Cat
------------------
Output:
Dog Ca Cat Cc Cat
Run Code Online (Sandbox Code Playgroud)
但是我想要一个非贪心的匹配,并带有以下输出:
Output:
Dog Ca Cat
Run Code Online (Sandbox Code Playgroud)
如何在Flex上实现?
编辑
尝试了以下内容:
%%
Dog.*Cat/.*Cat printf("Matched : ||%s||", yytext);
dog.*cat printf("Matched : ||%s||", yytext);
dOg[^c]*cAt printf("Matched : ||%s||", yytext);
DOG.*?CAT printf("Matched : ||%s||", yytext);
%%
Run Code Online (Sandbox Code Playgroud)
输入:
Dog Ca Cat Cc Cat
dog Ca cat Cc cat
dOg Ca cAt Cc cAt
DOG CA CAT CC CAT
Run Code Online (Sandbox Code Playgroud)
输出:
Matched : ||Dog Ca Cat Cc Cat||
Matched : ||dog Ca …
Run Code Online (Sandbox Code Playgroud) 我试图使用https://wiki.theory.org/BitTorrent_Tracker_Protocol从跟踪器获取同行列表
但网上提供的大多数torrent文件都使用了udp
跟踪器.以上网站适用于HTTP跟踪器.使用基于HTTP的跟踪器的torrent文件会出错.(Passkey error , or hash error or user error or 404 not found response
)
现在我的所有HTTP跟踪器的请求代码如下所示:
payload = urllib.urlencode(payload)
for ann in self.torrent.announce_list:
if("udp" not in ann[0]):
url = ann[0]
print "Encoded Request URL :",(url + "?" + payload)
print "Requesting Tracker for Peer List"
try:
response = urllib.urlopen(url + "?" + payload).read()
print "RESPONSE :",response
except Exception, e:
print e
Run Code Online (Sandbox Code Playgroud)
我已经根据uTorrent使用wireshark提出的请求交叉检查了我的请求URL.他们都匹配.正确生成信息哈希.
如何从UDP和HTTP跟踪器中检索对等列表?我试图不使用像lib-torrent这样的外部库.一些指导会非常有帮助.
我刚开始使用网络,正在编写一个非常简单的多播代码。我仍然不确定不同的接口。一些示例使用“0.0.0.0”,而其他示例使用“127.0.0.1”。
服务器代码
import socket
import sys
import time
ANY = socket.gethostbyname('localhost')
S_PORT = 1501
M_ADDR = "224.168.2.9"
M_PORT = 1600
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEPORT,1)
sock.bind((ANY,S_PORT))
sock.setsockopt(socket.IPPROTO_IP,socket.IP_MULTICAST_TTL,255)
while 1:
message = raw_input("Enter message: ")
sock.sendto(message,(M_ADDR,M_PORT))
if message == "exit":
break
sock.close()
Run Code Online (Sandbox Code Playgroud)
客户端代码
import socket
import time
import sys
ANY = socket.gethostbyname('localhost')
M_ADDR = "224.168.2.9"
M_PORT = 1600
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEPORT,1)
sock.bind((ANY,M_PORT))
sock.setsockopt(socket.IPPROTO_IP,socket.IP_MULTICAST_TTL,255)
status = sock.setsockopt(socket.IPPROTO_IP,socket.IP_ADD_MEMBERSHIP,socket.inet_aton(M_ADDR) + socket.inet_aton(ANY))
while 1:
data,addr = sock.recvfrom(1024)
print "Received message from " + str(addr) + …
Run Code Online (Sandbox Code Playgroud) 我有一个嵌套的形式数组:
$scope.itinerary =
[
[
{name:'x'},
{name:'y'},
{name:'z'}
],
[
{name:'a'},
{name:'b'},
{name:'c'}
]
]
Run Code Online (Sandbox Code Playgroud)
我正在使用以下内容执行$ watchCollection:
$scope.$watchCollection(function () {
return $scope.itinerary;
},
function () {
console.log("Changed")
}
);
Run Code Online (Sandbox Code Playgroud)
但console.log()
只有在删除其中一个子数组或插入新数组时才会执行.如果我将元素从一个数组移动到另一个数组,则没有任何反应.(例如,当我{name:'a'}
从一个阵列移动到另一个阵列时,没有任何反应).如何将手表放在嵌套数组上?
我在myCustomCell类中有2个UIButtons,它是UITableViewCell的子类.
黑色轮廓是由' cellForRowAtIndex ' 返回的单元格(UITableViewCell*).此单元格包含" myCustomCell "作为子视图.' myCustomCell '有两个UIButtons和以下属性:
backgroundcolor = clearColor
opaque = NO
Run Code Online (Sandbox Code Playgroud)
在单击单元格中除两个红色框(UI按钮)之外的任何位置时,我希望触发" didSelectRowAtIndexPath ".但是如果用户点击UIButton,则只需触发目标选择器,而不是'didSelectRowAtIndexPath'.我怎样才能做到这一点?
在最近由“AmDocs”组织的比赛中,我遇到了以下问题:(问题的基本思想)
你是一个固定大小的矩阵 12x12。您将获得六个长度为 6、5、5、4、3、2 的线段。矩阵有空的空间和填充的空间。您必须返回 "Yes" 或 "No" ,无论所有 6 条线段是否可以同时适合矩阵。线条只能水平或垂直放置。
应该使用什么算法来解决这个问题?包装 ?背包?
如果我想将以下字符串文字存储在变量中:
ab'c'd
Run Code Online (Sandbox Code Playgroud)
然后使用单引号(')和/或反向标记(`)来实现它的各种方法是什么?
我有一个简单的循环:
for(Object_ *obj in not.object)
{
......
Object *objStor = [NSEntityDescription insertNewObjectForEntityForName:@"Object" inManagedObjectContext:context];
.....
}
Run Code Online (Sandbox Code Playgroud)
'Object_'类的接口如下所示:
@interface Object_ : NSObject
@property (nonatomic, strong) NSNumber * id;
@property (nonatomic, strong) NSString * name;
@property (nonatomic, strong) NSNumber * review_id;
.
.
.
.
@end
Run Code Online (Sandbox Code Playgroud)
'Object'类的接口(由xCode for Core Data Schema创建)如下所示:
@interface Object : NSManagedObject
@property (nonatomic, retain) NSNumber * id;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSNumber * rating;
.
.
.
.
@end
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
*** NSForwarding: warning: object …
Run Code Online (Sandbox Code Playgroud) ios ×4
cocoa-touch ×3
python ×3
core-data ×2
objective-c ×2
string ×2
2d ×1
abap ×1
algorithm ×1
angularjs ×1
arrays ×1
bittorrent ×1
flex-lexer ×1
get ×1
ios6 ×1
javascript ×1
lex ×1
matrix ×1
multicast ×1
networking ×1
p2p ×1
performance ×1
regex ×1
restkit ×1
syntax ×1
udp ×1
uibutton ×1
uitableview ×1