小编Pao*_*rio的帖子

如何使用Core Data模型而不保存它们?

我正在编写一个应用程序,我正在使用MagicalRecord作为与Core Data交互的框架.应用程序从服务器获取一系列海报,然后显示它们.也可以在应用程序上创建海报,然后在用户需要时上传到服务器.

因此,用户创建的海报使用Core Data存储在本地数据库中,而从服务器获取的海报应仅显示在应用程序中,但不能保存在本地.我如何使用相同的Poster类(现在是NSManagedObject的子类)来处理这两种情况?

这是我的班级:

@interface Poster : NSObject
@property (nonatomic, retain) NSNumber * posterID;
@property (nonatomic, retain) NSString * artists;
@end
Run Code Online (Sandbox Code Playgroud)

当我从服务器获取海报数组时,我分配一个新的海报,然后分配属性:

Poster *poster = [[Poster alloc] init];
if ([dict objectForKey:@"id"]) poster.posterID = [dict objectForKey:@"id"];
if ([dict objectForKey:@"artists"]) poster.artists = [dict objectForKey:@"artists"];
Run Code Online (Sandbox Code Playgroud)

但是当到达链接的poster.posterID = [dict等等时,应用程序崩溃时出现此错误

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [Poster setPosterID:]:无法识别的选择器发送到实例0xaa8b160'

如果我用Poster *poster = [Poster createEntity];而不是创建新对象Poster *poster = [[Poster alloc] init];,应用程序不会崩溃,但是当我保存上下文时,我发现从服务器获取的所有海报都是本地保存的.

我怎么解决这个问题?

core-data objective-c ios magicalrecord

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

如何在没有Bonjour的情况下找到所有网络设备?

我写了一个mac应用程序,我需要发现连接到同一个WIFI网络的其他Mac/PC/iPhone/iPad.

Bonjour似乎是最合理的选择,但事实证明它在许多类型的路由器上都存在问题(例如,我的路由器无法阻止Bonjour服务).

我只需要找到设备的iP,然后我将尝试连接到特定于应用程序的端口,以确定我的进程是否在那里运行.

在不违反App Store Sandboxing的情况下,完成此任务的最佳方法是什么?

macos network-programming objective-c ios

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

Ghostscript灰度转换仍然包含颜色?

如果它包含颜色,我需要转换灰度的pdf.为此,我找到了一个脚本,可以确定pdf是否已经是灰度级.

convert "source.pdf" -colorspace RGB -unique-colors txt:- 2> /dev/null \
   | egrep -m 2 -v "#([0-9|A-F][0-9|A-F])\1{3}" \
   | wc -l
Run Code Online (Sandbox Code Playgroud)

这会计算文档中存在多少种具有不同RGB值的颜色(因此它们不是灰色的).

如果pdf不是灰度文档,我继续使用ghostscript进行转换

gs \
  -sOutputFile=temp.pdf \
  -sDEVICE=pdfwrite \
  -sColorConversionStrategy=Gray \
  -dProcessColorModel=/DeviceGray \
  -dCompatibilityLevel=1.4 \
  -dNOPAUSE \
  -dBATCH \
   source.pdf < /dev/null
Run Code Online (Sandbox Code Playgroud)

如果我用PDF查看器打开输出文档,它会正确显示没有颜色.但是如果我在新生成的文档上尝试第一个脚本,结果证明它仍然包含一些颜色.如何将文档转换为精确灰度?我需要这个,因为如果我用彩色打印机打印这个文件,打印机将使用颜色而不是黑色打印灰色.

pdf imagemagick ghostscript grayscale

4
推荐指数
2
解决办法
4797
查看次数