小编Kyu*_*ubi的帖子

核心数据:插入一对多关系

我刚刚开始学习如何在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.但这会产生大量的冗余代码.难道不应该有更有效的方法吗?

cocoa-touch core-data objective-c relational-database ios

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

自定义NSLog方法(Variadic)

我正在尝试创建一个自定义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

我哪里错了?

string objective-c variadic-functions ios ios6

6
推荐指数
3
解决办法
6742
查看次数

效率:字符串切片与自定义函数

我有一个长度为 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)

python string performance

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

Flex中的非贪婪正则表达式匹配

我刚刚开始使用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)

regex lex flex-lexer

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

BitTorrent客户端:从跟踪器获取对等列表[Python]

我试图使用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这样的外部库.一些指导会非常有帮助.

python p2p bittorrent get

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

无法分配请求的地址:Python 多播

我刚开始使用网络,正在编写一个非常简单的多播代码。我仍然不确定不同的接口。一些示例使用“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)

python networking udp multicast

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

带有嵌套数组的$ watchCollection()

我有一个嵌套的形式数组:

$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'}从一个阵列移动到另一个阵列时,没有任何反应).如何将手表放在嵌套数组上?

javascript arrays angularjs

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

UITutton在UITableViewCell中

我在myCustomCell类中有2个UIButtons,它是UITableViewCell的子类.

我的自定义细胞

黑色轮廓是由' cellForRowAtIndex ' 返回的单元格(UITableViewCell*).此单元格包含" myCustomCell "作为子视图.' myCustomCell '有两个UIButtons和以下属性:

    backgroundcolor = clearColor 
    opaque = NO
Run Code Online (Sandbox Code Playgroud)

在单击单元格中除两个红色框(UI按钮)之外的任何位置时,我希望触发" didSelectRowAtIndexPath ".但是如果用户点击UIButton,则只需触发目标选择器,而不是'didSelectRowAtIndexPath'.我怎样才能做到这一点?

cocoa-touch uibutton uitableview ios

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

将线拟合到网格矩阵中 [竞争,而不是硬件]

在最近由“AmDocs”组织的比赛中,我遇到了以下问题:(问题的基本思想)

你是一个固定大小的矩阵 12x12。您将获得六个长度为 6、5、5、4、3、2 的线段。矩阵有空的空间和填充的空间。您必须返回 "Yes" 或 "No" ,无论所有 6 条线段是否可以同时适合矩阵。线条只能水平或垂直放置。

应该使用什么算法来解决这个问题?包装 ?背包?

algorithm 2d matrix knapsack-problem dynamic-programming

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

ABAP中的Back-Tick和单引号

如果我想将以下字符串文字存储在变量中:

ab'c'd
Run Code Online (Sandbox Code Playgroud)

然后使用单引号(')和/或反向标记(`)来实现它的各种方法是什么?

syntax abap syntax-highlighting lexical-analysis

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

类没有实现doesNotRecognizeSelector

我有一个简单的循环:

   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)

cocoa-touch core-data ios restkit

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